12

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

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

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

4

3 回答 3

14

使用该squeeze功能,它会删除单件维度。

例子:

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

ans =

    50   100

这是通用的,您不必担心要索引的维度。所有单例维度都被挤出。

于 2011-04-19T17:13:57.753 回答
2
reshape(myArray(myIndex,:,:),[100,50])
于 2011-04-19T17:11:30.830 回答
0

squeezereshape并且permute可能是处理 ND 矩阵时最重要的三个函数。举个例子如何使用第三个功能:

A=randn(4,50,100);
B=permute(A(1,:,:),[2,3,1])
于 2016-02-05T14:08:17.247 回答