如何将N-D阵列的最后两个维度作为2D阵列?

时间:2011-04-19 17:09:56

标签: arrays matlab multidimensional-array matrix n-dimensional

我在MATLAB中有一个3D数组,size(myArray) = [100 100 50]。现在,我想以2D矩阵的形式获得由 first 维度中的索引指定的特定图层。 我尝试了myMatrix = myArray(myIndex,:,:);,但这给了我一个带size(myMatrix) = [1 100 50]的3D数组。

如何告诉MATLAB我对第一维不感兴趣(因为只有一层),所以它可以简化矩阵?

注意:我还需要使用第二个索引执行此操作,呈现size(myMatrix) = [100 1 50]而不是所需的[100 50]。解决方案应该适用于这两种情况,并且最好也适用于第三维。

3 个答案:

答案 0 :(得分:14)

使用squeeze功能删除单件尺寸。

示例:

A=randn(4,50,100);
B=squeeze(A(1,:,:));
size(B)

ans =

    50   100

这是一般化的,您无需担心要编入索引的维度。所有单身尺寸都被挤掉了。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

在处理N-D矩阵时,

squeezereshapepermute可能是最重要的三个函数。只是举个例子来说明如何使用第三个函数:

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