首页 > 代码库 > matlab高维数组

matlab高维数组

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

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     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的逆序操作

在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     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>









































matlab高维数组