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)
ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
eye() 函数创建一个单位矩阵。
eye(4)
rand() 函数在(0,1)上创建一个均匀分布的随机数数组-
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 square 是一个正方形,当其元素按行,列或对角线相加时,会产生相同的和。
magic() 函数创建一个魔术方阵。它采用一个单数参数,该参数给出了正方形的大小。参数必须是大于或等于3的标量。
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]
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)
B = cat(dim, A1, A2...)
我们还可以使用 cat() 函数来构建多维数组。它沿着指定的维度连接一个数组列表-
cat()函数的语法是-
在哪里,
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提供了以下功能来对数组内容进行排序,旋转,置换,整形或移位。
以下示例说明了上面提到的一些功能。
元素的长度、维数和数量-
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
单元数组
单元格数组是索引单元格的数组,其中每个单元格可以存储不同维度和数据类型的数组。
cell 函数用于创建单元格数组。单元格功能的语法是-
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)
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