matlab中cirshift,Matlab数组

MATLAB中所有数据类型的所有变量都是多维数组。向量是一维数组,矩阵是二维数组。

我们前面已经讨论和学习过向量和矩阵。 在本章中,将讨论和学习多维数组。 然而,在此之前,让我们先学习一些特殊类型的数组。

MATLAB中的特殊数组

在本节中,我们将讨论学习一些创建一些特殊数组的函数。对于这些函数,单个参数创建一个正方形数组,双参数创建矩形数组。

zeros()函数是用来创建一个全零的数组 –

例如 –

zeros(5)

执行上面示例代码,得到以下结果 –

Trial>> zeros(5) ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ones()函数创建一个所有元素为1的数组 –

例如 –

ones(4,3)

执行上面示例代码,得到以下结果 –

Trial>> ones(4,3) ans = 1 1 1 1 1 1 1 1 1 1 1 1

eye()函数创建一个单位矩阵。

例如 –

eye(4)

执行上面示例代码,得到以下结果 –

Trial>> eye(4) ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

rand()函数在(0,1) – 上创建均匀分布的随机数的数组 –

例如 –

rand(3, 5)

执行上面示例代码,得到以下结果 –

Trial>> rand(3, 5) ans = 0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.6324 0.5469 0.1576 0.4854 0.1270 0.0975 0.9575 0.9706 0.8003

魔方

魔方是一个平方,它产生相同的和,它的元素被逐行,逐列或者对角线地添加时。

magic()函数创建一个魔术方阵。这需要一个参数,指定正方形的大小。 参数必须是大于或等于3的标量。

magic(4)

执行上面示例代码,得到以下结果 –

Trial>> magic(4) ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1

多维数组

具有二维以上的数组在MATLAB中被称为多维数组。MATLAB中的多维数组是正常二维矩阵的扩展。

通常要生成一个多维数组,首先创建一个二维数组然后再扩展它。

例如,让我们创建一个二维数组a。

a = [7 9 5; 6 1 9; 4 3 2]

执行上面示例代码,得到以下结果 –

Trial>> a = [7 9 5; 6 1 9; 4 3 2] a = 7 9 5 6 1 9 4 3 2

数组a是3×3数组; 可以通过提供以下值来添加第三维:

a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]

执行上面示例代码,得到以下结果 –

a = ans(:,:,1) = 0 0 0 0 0 0 0 0 0 ans(:,:,2) = 1 2 3 4 5 6 7 8 9

还可以使用ones(),zeros()或rand()函数来创建多维数组。

例如,

b = rand(4,3,2)

执行上面示例代码,得到以下结果 –

Trial>> b = rand(4,3,2) b(:,:,1) = 0.1419 0.9595 0.9340 0.4218 0.6557 0.6787 0.9157 0.0357 0.7577 0.7922 0.8491 0.7431 b(:,:,2) = 0.3922 0.0318 0.8235 0.6555 0.2769 0.6948 0.1712 0.0462 0.3171 0.7060 0.0971 0.9502

也可以使用cat()函数来构建多维数组。它沿着指定的维度连接数组列表 –

cat()函数的语法是 –

B = cat(dim, A1, A2...)

其中,

B是创建的新阵列

A1,A2,...是要连接的数组

dim是连接数组的大小

例子

创建脚本文件并在其中键入以下代码 –

a = [9 8 7; 6 5 4; 3 2 1]; b = [1 2 3; 4 5 6; 7 8 9]; c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])

执行上面示例代码,得到以下结果 –

c(:,:,1) = 9 8 7 6 5 4 3 2 1 c(:,:,2) = 1 2 3 4 5 6 7 8 9 c(:,:,3) = 2 3 1 4 7 8 3 9 0

数组函数

MATLAB提供以下函数来对数组内容进行排序,旋转,排列,重新成形或移位。

函数

描述

length

向量的大小或数组的长度

ndims

数组的维数

numel

数组的元素数量

size

数组的维度

iscolumn

确定输入是否为列向量

isempty

确定数组是否为空

ismatrix

确定输入是否为矩阵

isrow

确定输入是否为行向量

isscalar

确定输入是否为标量

isvector

确定输入是否为向量

blkdiag

从输入参数构造块对角矩阵

circshift

循环移位

ctranspose

复共轭转置

diag

矩阵对角矩阵和对角线

flipdim

沿着指定的尺寸翻转数组

fliplr

从左到右翻转矩阵

flipud

向下翻转矩阵

ipermute

反转N-D阵列的置换维度

permute

重新排列N-D数组的维度

repmat

复制和平铺数组

reshape

重塑数组

rot90

旋转矩阵90度

shiftdim

移动维度

issorted

确定设置元素是否按排序顺序

sort

按升序或降序排列数组元素

sortrows

按升序排列行

squeeze

删除单例维度

transpose

转置

vectorize

向量化表达式

例子

以下的例子说明了上面提到的一些函数。

长度,尺寸和元素数量:

创建脚本文件并键入以下代码 –

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % length of x vector y = rand(3, 4, 5, 2); ndims(y) % no of dimensions in array y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % no of elements in s

运行文件时,显示以下结果 –

ans = 8 ans = 4 ans = 23

数组元素的循环移位

创建脚本文件并在其中键入以下代码 –

a = [1 2 3; 4 5 6; 7 8 9] % the original array a b = circshift(a,1) % circular shift first dimension values down by 1. c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1 % and second dimension values to the left % by 1.

运行文件文件时,显示以下结果 –

a = 1 2 3 4 5 6 7 8 9 b = 7 8 9 1 2 3 4 5 6 c = 8 9 7 2 3 1 5 6 4

排序数组

创建脚本文件并在其中键入以下代码 –

v = [ 23 45 12 9 5 0 19 17] % horizontal vector sort(v) % sorting v m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array sort(m, 1) % sorting m along the row sort(m, 2) % sorting m along the column

运行文件文件时,显示以下结果 –

v = 23 45 12 9 5 0 19 17 ans = 0 5 9 12 17 19 23 45 m = 2 6 4 5 3 9 2 0 1 ans = 2 0 1 2 3 4 5 6 9 ans = 2 4 6 3 5 9 0 1 2

单元阵列

单元格阵列是索引单元的数组,其中每个单元格可以存储不同维度和数据类型的数组。

单元格函数用于创建单元格数组。单元格函数的语法是 –

C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)

其中,

C是单元阵列;

dim是一个整数或整数向量,它指定单元格数组C的维数;

dim1,...,dimN是指定C大小的标量整数;

obj是以下之一:

Java数组或对象

类型为System.String或System.Object的.NET数组

示例

创建脚本文件并在其中键入以下代码 –

c = cell(2, 5); c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}

运行文件时,得到以下结果 –

c = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 [1,3] = Green [2,3] = 3 [1,4] = Yellow [2,4] = 4 [1,5] = White [2,5] = 5 }

访问单元格数组数据

有两种方法来引用单元格数组的元素 –

将第一个括号()中的索引包围,以引用单元格集

将大括号{}中的索引括起来,以引用单个单元格内的数据

当将索引包围在第一个括号中时,它指的是这组单元格。

括号中的单元格数组索引是指单元格集。

例如:

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c(1:2,1:2)

运行文件时,得到以下结果 –

ans = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 }

还可以通过用花括号索引来访问单元格的内容。

例如 –

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c{1, 2:4}

运行文件时,得到以下结果 –

ans = Blue ans = Green ans = Yellow

¥ 我要打赏   纠错/补充 收藏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值