如何将N-D数组的后两个维度作为2D数组获取?

12

我在MATLAB中有一个三维数组,size(myArray) = [100 100 50]。现在,我想获取指定的层,该层由第一个维度中的索引确定,并以2D矩阵的形式呈现。

我尝试使用myMatrix = myArray(myIndex,:,:);,但这会给我一个3D数组,其size(myMatrix) = [1 100 50]

我该如何告诉MATLAB我不感兴趣第一维度的数据(因为只有一层),以便简化矩阵?

注意:我还需要使用第二个索引执行此操作,从而使size(myMatrix) = [100 1 50]而不是所需的[100 50]。最好的解决方案应适用于所有情况(包括第三个维度)。

3个回答

14
使用squeeze函数,它可以移除单一维度。 例子:
A=randn(4,50,100);
B=squeeze(A(1,:,:));
size(B)

ans =

    50   100

这是泛化的,您不必担心要沿哪个维度进行索引。所有单例维度都被挤压出去了。


2
reshape(myArray(myIndex,:,:),[100,50])

0

squeezereshapepermute可能是在处理N-D矩阵时最重要的三个函数。以下是一个如何使用第三个函数的示例:

A=randn(4,50,100);
B=permute(A(1,:,:),[2,3,1])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接