我在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]
。解决方案应该适用于这两种情况,并且最好也适用于第三维。
答案 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)
squeeze
,reshape
和permute
可能是最重要的三个函数。只是举个例子来说明如何使用第三个函数:
A=randn(4,50,100);
B=permute(A(1,:,:),[2,3,1])