如何从N-D矩阵中提取3D矩阵?

时间:2019-06-12 12:58:58

标签: matlab matrix

我正在配置如下的5D矩阵:

[nf,nx,ny,np,nz]=size(D);

诸如此类

nf=301; 
nx=12; 
ny=12; 
np=12; 
nz=12;

我需要从5D矩阵D中提取两个矩阵:

  • 第一个A,例如[nf,nx,ny]=size(A);
  • 第二个B,例如[nf,np,nz]=size(B);

是否有任何MATLAB代码从D中提取这两个矩阵?

1 个答案:

答案 0 :(得分:2)

为此,您需要为二维选择特定的下标索引值,从multidimensional array中提取数据,然后根据需要使用squeeze函数折叠得到的长度为1的维度。这是AB的工作方式:

pIndex = 2;  % Second index of dimension 4
zIndex = 3;  % Third index of dimension 5
A = D(:, :, :, pIndex, zIndex);  % Don't need squeeze because they
                                 %   are the trailing dimensions

xIndex = 1;   % First index of dimension 2
yIndex = 12;  % Last index of dimension 3
B = squeeze(D(:, xIndex, yIndex, :, :));

请注意,使用colon作为索引将包括该维度的所有下标。