首页 > 解决方案 > 如何从 ND 矩阵中提取 3D 矩阵?

问题描述

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

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

这样的

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

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

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

标签: matlabmatrix

解决方案


为此,您需要为二维选择特定的下标索引值,从多维数组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, :, :));

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


推荐阅读