MATLAB 数组
-
数组
MATLAB中所有数据类型的所有变量都是多维数组。向量是一维数组,矩阵是二维数组。我们已经讨论了向量和矩阵。在本章中,我们将讨论多维数组。但是,在此之前,让我们讨论一些特殊类型的数组。 -
MATLAB中的特殊数组
在本节中,我们将讨论一些创建特殊数组的函数。对于所有这些功能,一个参数创建一个正方形数组,双参数创建一个矩形数组。在 zeros()函数创建了全零的数组-例如-
尝试一下zeros(5)
MATLAB将执行上述语句并返回以下结果-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)
MATLAB将执行上述语句并返回以下结果-ans = 1 1 1 1 1 1 1 1 1 1 1 1
eye()函数创建了一个单位矩阵。
尝试一下eye(4)
MATLAB将执行上述语句并返回以下结果-ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
rand()函数创建了均匀分布的随机数的上数组(0,1) -
尝试一下rand(3, 5)
MATLAB将执行上述语句并返回以下结果-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)
MATLAB将执行上述语句并返回以下结果-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]
MATLAB将执行上述语句并返回以下结果-a = 7 9 5 6 1 9 4 3 2
数组a是3×3数组;我们可以添加第三维一,通过提供类似的值-
尝试一下a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB将执行上述语句并返回以下结果-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)
MATLAB将执行上述语句并返回以下结果-b(:,:,1) = 0.0344 0.7952 0.6463 0.4387 0.1869 0.7094 0.3816 0.4898 0.7547 0.7655 0.4456 0.2760 b(:,:,2) = 0.6797 0.4984 0.2238 0.6551 0.9597 0.7513 0.1626 0.3404 0.2551 0.1190 0.5853 0.5060
我们还可以使用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数组或对象
- .NET类型为System.String或System.Object的数组
创建一个脚本文件并在其中键入以下代码-
尝试一下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)
MATLAB将执行上述语句并返回以下结果-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}
MATLAB将执行上述语句并返回以下结果-ans = Blue ans = Green ans = Yellow