1

MATLAB问题:

我有一个三维数组 A(2,2,2)。我想定义一个2x2数组作为A的子数组,如下:

B = A(1,:,:)。

也就是说,我们只是在第一个组件上进行投影。但是 matlab 现在会将这个 2x2 矩阵视为 1x2x2 数组,所以我不能做某些事情(比如乘以另一个 2x2 矩阵)。

如何将 B 作为 A 的 2x2 子数组?

4

2 回答 2

2

如果你想一栋摩天大楼,你A(1,:,:)就是把一楼拆掉,这个操作不可避免地发生在第三维。

您可以使用reshape(),squeeze()permute()摆脱单件维度:

reshape(A(1,:,:),2,2)
squeeze(A(1,:,:))
permute(A(1,:,:),[2,3,1])

squeeze()几乎所有工作都靠自己完成,但它不是内置函数,实际上使用reshape(). 其他两种选择预计会更快。

于 2013-04-16T20:14:05.490 回答
2

您想使用squeeze删除单件维度的功能:

B = squeeze(A(1,:,:))
于 2013-04-16T20:16:24.963 回答