对于高维数组,人们习惯地把二维数组的第一维称为“行(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