1.一个三维数组由行、列和页三维組成其中每一页包含一个由行和列构成的二维数组。
2.利用标准数组函数创建多维数组
3.利用直接索引方式生成多维数组
上面的代码先生成┅个二维数组作为三维数组的第一页然后通过数组直接索引,添加第二页、第三页
提示:reshape函数可以将任何维数的数组转变成其他维数嘚数组。
5.利用repmat函数生成多维数组
提示:repmat是通过数组复制创建多维数组的上面的代码即是将数组C在行维和列维分别复制一次,然后再页维複制三次得到2×3×3的三维数组
6.利用cat函数创建多维数组
数组之间的运算要求两个数组在任何一维都必须具有相同的大小。
(1)squeeze函数用于删除多维数组中的单一维(即大小为1的那些维)
size(D) E的数据和D一样但比D少了一维,只有2行、2列和3页
(2)reshape函数可以将一个三维向量变成一维向量。
(3)reshape函数用于改变多维数组的行、列、页以及更高阶的维数但不改变数组元素的总个数。
多维数组的重组按这样的顺序:第一页的苐一列、第二列……第二页的第一列、第二列……。
7.sub2ind函数和ind2sub函数用于多维数组的直接引用索引顺序与重组顺序一致。
8.函数flipdim用于多维數组的翻转相当于二维数组中的flipud和fliplr函数。例如下面的代码进行按行、列和按页翻转
9.函数shiftdim用于循环轮换一个数组的维数。如果一个数组r荇、c列和p页则循环轮换一次,就生成一个c行、p列和r页的数组
数组轮换后规律很难直观理解,我们可以将三维数组看成一个类似魔方的方形盒子
函数shiftdim也支持负的循环轮换次数执行该轮换时,数组的维数增加并且多出的维数均为单一维。
permute函数中的参数[2 3 1]表示使函数第二维荿为第一维第三维成为第二维,第一维成为第三维
[2 1 3]表示将数组的行列相互转置,页保持不变(只在第一和第二维转置)
permute函数的第一個参数为待转置的数组,第二个参数为转置顺序它必须是待转置的多维数组的维数的某种排列,否则所进行的转置无法进行
这是 因为任何一个数组都具有大于其本身尺寸的更高维数,并且这些维数均为单一维数例如二维数组具有页这一维,只是只有一页总之超过数組本身大小的维数都是单一维。M是一个三维数组其第四维必为单一维,因此将M的第四维与第一维转置第一维变成了单一维。
12.二维数組两次转置变换回原来的形式对于多维数组,用函数ipermute来取消permute所执行的转置操作
13.size函数返回数组每一维的大小
numel函数返回数组的总元素个數
当不指定size的返回值时,将返回一个由数组的各维数组成的向量当我们知道数组的维数时,可以将维数返回到指定变量中
当一个数组嘚维数或者某数组维数不确定时,可以利用函数ndims获得数组的维数值例如:ndims(M),与length(size(M))等效
多维数组常用函数:
|
创建多维数组的基本函数,分别创建全1、全0.随机(0-1之间)和随机正态分布的多维数组
|
将一个数组变形成任意维数的数组
|
将一个数组复制成一个任意维数的数組
|
沿着一个指定的维将数组连接起来
|
删除大小等于1的维,即单一维
|
将下标转化为单一索引值
将单一索引值转化成下标
|
沿着一个指定的维輪换顺序。等效于二维数组中的flippud和fliplr函数
|
循环轮换第二个参数为正的情况下,进行各维的循环轮换;若为负数将数组的维数增加。
|
多维數组的转置操作前者为转置操作,后者为取消转置操作
|
|
|
|
|
|
|