
2.6 多维数组
多维数组(Multidimensional Arrays)是三维及以上的数组。三维数组是二维数组的扩展,二维数组行和列构成面,三维数组可以看成行、列和页构成的“长方体”,实际中三维数组用得比较多。
三维数组用3个下标表示,数组的元素存放遵循规则:第一页第一列接该页的第二列、第三列,以此类推;第一页最后一列接第二页第一列,直到最后一页最后一列结束。
四维数组和三维数组有些类似,使用4个下标表示,更高维的数组是在后面添加维度来确定页。
2.6.1 多维数组的创建
多维数组的创建一般有4种方法:直接赋值法、二维数组扩展法、使用cat函数创建法和使用特殊数组函数法。
1.直接赋值法
例如,创建三维数组A。

2.二维数组扩展法
MATLAB可以利用二维数组扩展到三维数组,例如:

如果第一页不赋值,直接赋值第二页,那么也能产生三维数组,第一页值全默认为0,例如:

3.使用函数cat创建法
MATLAB语言可以使用cat函数,把几个原先赋值好的数组按照某一维连接起来,创建一个多维数组。函数调用格式如下:

例如,使用cat函数创建多维数组:

4.使用特殊数组函数法
MATLAB语言提供了许多创建特殊多维矩阵的函数,例如rand、randn、ones和zeros等,这些函数都可以创建多维特殊矩阵。函数的功能和使用方法与二维特殊矩阵类似。
例如:

2.6.2 多维数组的操作
MATLAB多维数组操作主要有数组元素的提取、多维数组形状的重排和维度重新排序。
1.多维数组元素的提取
提取多维数组元素的方法有两种:全下标方式和单下标方式。
1)全下标法
例如:

2)单下标法
MATLAB单下标取多维数组的元素遵循规则:第一页第一列,然后第一页第二列,然后第一页最后一列,然后第二页第一列,直到最后一页最后一列。
例如:

2.多维数组形状的重排
MATLAB语言可以利用函数reshape改变多维数组的形状,函数的调用格式如下:

其中,m、n和p分别是行、列和页,A1是重排的多维数组。数组还是按照单下标方式存储顺序重排,重排前后元素数据大小没变,位置和形状会改变。
例如:

3.多维数组维度的重新排序
MATLAB语言可以利用函数permute重新定义多维数组的维度顺序,按照新的行、列和页重新排序数组,permute改变了线性存储的方式,函数的调用格式如下:

其中,m、n和p分别是列、行和页,A1是重定义的多维数组,要求定义后的维度不少于原数组的维度,而且各维度数不能相同。
例如:
