matlab高维数组

来源:互联网 发布:实时数据库 编辑:程序博客网 时间:2024/06/06 13:53

对于高维数组,人们习惯地把二维数组的第一维称为“行(Row)”,把第二维称为“列(column)”,至于第三维,称谓都是不相同的这里为了方便,采用“页(Page)”来称呼。

打个比方,二维数组可以看成由“小方格”拼成的“矩面行”那样,三维数组可以被看成由“小方块”组成的“长方体”。对于三维数组来说,无论在那一页的二维行、列数组都应该是同样大小的;无论哪一行上的二维列、页数组应该是同样的大小的;无论那一列上的二维行、页组数也应该是同样大小的。

1、高维数组的创建

 1)直接通过“全下标”元素赋值方式创建高维数组;

 2)由若干个同样大小的低维数组组合成高维数组;

 3)由函数ones、zeros、rand、randn直接创建标准高维数组;

 4)借助cat,repmat,reshape等函数构作高维数组;

例子:1)全下标单元素赋值法


>> A(2,4,2)=1A(:,:,1) =     0     0     0     0     0     0     0     0A(:,:,2) =     0     0     0     0     0     0     0     1>> 

2)由若干个同样大小的低维数组组合成高维数组


<span style="font-size:18px;">>> C=ones(2,3);C(:,:,2)=ones(2,3)*2;C(:,:,3)=ones(2,3)*3C(:,:,1) =     1     1     1     1     1     1C(:,:,2) =     2     2     2     2     2     2C(:,:,3) =     3     3     3     3     3     3>> </span>


3)由函数ones、zeros、rand、randn直接创建标准高维数组


<span style="font-size:18px;">>> D=rand(2,4,3)D(:,:,1) =    0.6948    0.9502    0.4387    0.7655    0.3171    0.0344    0.3816    0.7952D(:,:,2) =    0.1869    0.4456    0.7094    0.2760    0.4898    0.6463    0.7547    0.6797D(:,:,3) =    0.6551    0.1190    0.9597    0.5853    0.1626    0.4984    0.3404    0.2238>> </span>

4)借助cat,repmat等函数构建高纬数组


<span style="font-size:18px;">>> E=eye(2,3)E =     1     0     0     0     1     0>> E3=repmat(E,[1,2,2])E3(:,:,1) =     1     0     0     1     0     0     0     1     0     0     1     0E3(:,:,2) =     1     0     0     1     0     0     0     1     0     0     1     0>> </span>


2、高纬数组的重排


B=permute(A,DimOrder_0)   %重排A的维度AA=ipermute(B,DimOrder_i)  %permute的逆序操作

在permute指令中,第二输入量DimOrder_0是维度序号行向量。该向量的各元素的位置对应B数组的维度号;而各元素值是值A的维度号。


<span style="font-size:18px;">>> A=reshape(1:24,[2,4,3])A(:,:,1) =     1     3     5     7     2     4     6     8A(:,:,2) =     9    11    13    15    10    12    14    16A(:,:,3) =    17    19    21    23    18    20    22    24>> DimOrder=[3,2,1]DimOrder =     3     2     1>> B=permute(A,DimOrder)B(:,:,1) =     1     3     5     7     9    11    13    15    17    19    21    23B(:,:,2) =     2     4     6     8    10    12    14    16    18    20    22    24>> AA=ipermute(B,DimOrder)AA(:,:,1) =     1     3     5     7     2     4     6     8AA(:,:,2) =     9    11    13    15    10    12    14    16AA(:,:,3) =    17    19    21    23    18    20    22    24>> </span>









































1 0