Matlab:从 LxMxN 数组中提取 LxN 数组

Matlab: Extract LxN array from LxMxN array

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

固定一个分量后,如何从三维数组中得到一个标准矩阵?我用matlab.

使用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 数组,即 L×N 矩阵相同,因为尾随单例维度 are ignored; in fact, arrays can be considered to have an infinite number 尾随单例维度。作为支票,

>> size(y)
ans =
     2     4

提醒一句:有些人可能会想使用更简单的 y = squeeze(x(:,2,:)),但这挤压了 all(非尾随)单例维度,而不仅仅是其次,因此它给出了 L=1.

错误 结果

您可以使用 reshape:

y = reshape(x(:,2,:), [L N]);