如何将 N-D 数组的最后两个维度作为 2D 数组?
Posted
技术标签:
【中文标题】如何将 N-D 数组的最后两个维度作为 2D 数组?【英文标题】:How do I get the two last dimensions of an N-D array as a 2D array? 【发布时间】:2011-08-08 20:52:04 【问题描述】:我在 MATLAB 中有一个 3D 数组,带有 size(myArray) = [100 100 50]
。现在,我想得到一个特定的层,由 first 维度中的索引指定,以二维矩阵的形式。
我试过myMatrix = myArray(myIndex,:,:);
,但这给了我一个带有size(myMatrix) = [1 100 50]
的3D数组。
如何告诉 MATLAB 我对第一个维度不感兴趣(因为只有一层),所以它可以简化矩阵?
注意:我还需要对第二个索引执行此操作,渲染 size(myMatrix) = [100 1 50]
而不是所需的 [100 50]
。解决方案应该适用于这两种情况,最好也适用于三维。
【问题讨论】:
【参考方案1】:使用squeeze
函数,该函数会删除单一维度。
示例:
A=randn(4,50,100);
B=squeeze(A(1,:,:));
size(B)
ans =
50 100
这是通用的,您不必担心要索引的维度。所有单例维度都被挤出。
【讨论】:
【参考方案2】:reshape(myArray(myIndex,:,:),[100,50])
【讨论】:
【参考方案3】:squeeze
、reshape
和 permute
可能是处理 N-D 矩阵时最重要的三个函数。举个例子如何使用第三个功能:
A=randn(4,50,100);
B=permute(A(1,:,:),[2,3,1])
【讨论】:
以上是关于如何将 N-D 数组的最后两个维度作为 2D 数组?的主要内容,如果未能解决你的问题,请参考以下文章