首页 > 解决方案 > Matlab:从 LxMxN 数组中提取 LxN 数组

问题描述

假设x=zeros(L,M,N)。对于一个固定的组件,剩下的数组基本上是一个矩阵。所以我应该能够做类似的事情y = x(:,2,:)。然后,我希望y是一个矩阵,即一个 LxN 数组。但是我得到了一个 Lx1xN 数组。

固定一个组件后,如何从三维数组中获取标准矩阵?我用matlab。

标签: arraysmatlabmultidimensional-arrayresizesize

解决方案


用于permute在索引后重新排列维度:

x = zeros(2,3,4); % L×M×N
y = permute(x(:,2,:), [1 3 2]); % move 2nd dimension to 3rd

代码将第二个维度发送到末尾。这会将L× 1×N数组转换为L× N×1数组,这与×矩阵相同,因为忽略了尾随单例维度;实际上,可以认为数组具有无限数量的尾随单维。作为检查,LN

>> size(y)
ans =
     2     4

提醒一句:有些人可能想使用更简单的y = squeeze(x(:,2,:)),但这会压缩所有(非尾随)单例维度,而不仅仅是第二个维度,因此它会给出错误的结果L=1


推荐阅读