对于高维数组,人们习惯地把二维数组的第一维称为“行(Row)”,把第二维称为“列(column)”,至于第三维,称谓都是不相同的这里为了方便,采用“页(Page)”来称呼。
打个比方,二维数组可以看成由“小方格”拼成的“矩面行”那样,三维数组可以被看成由“小方块”组成的“长方体”。对于三维数组来说,无论在那一页的二维行、列数组都应该是同样大小的;无论哪一行上的二维列、页数组应该是同样的大小的;无论那一列上的二维行、页组数也应该是同样大小的。
1、高维数组的创建
1)直接通过“全下标”元素赋值方式创建高维数组;
2)由若干个同样大小的低维数组组合成高维数组;
3)由函数ones、zeros、rand、randn直接创建标准高维数组;
4)借助cat,repmat,reshape等函数构作高维数组;
例子:1)全下标单元素赋值法
>> A(2,4,2)=1 A(:,:,1) = 0 0 0 0 0 0 0 0 A(:,:,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)*3 C(:,:,1) = 1 1 1 1 1 1 C(:,:,2) = 2 2 2 2 2 2 C(:,:,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.7952 D(:,:,2) = 0.1869 0.4456 0.7094 0.2760 0.4898 0.6463 0.7547 0.6797 D(:,:,3) = 0.6551 0.1190 0.9597 0.5853 0.1626 0.4984 0.3404 0.2238 >> </span>
<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 0 E3(:,:,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的逆序操作
<span style="font-size:18px;">>> A=reshape(1:24,[2,4,3]) A(:,:,1) = 1 3 5 7 2 4 6 8 A(:,:,2) = 9 11 13 15 10 12 14 16 A(:,:,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 23 B(:,:,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 8 AA(:,:,2) = 9 11 13 15 10 12 14 16 AA(:,:,3) = 17 19 21 23 18 20 22 24 >> </span>
原文地址:http://blog.csdn.net/u013476464/article/details/40586073