MATLAB子矩阵

时间:2013-04-16 20:08:12

标签: matlab projection submatrix

MATLAB问题:

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

B = A(1,:,:)。

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

如何将B作为A的2x2子阵列?

2 个答案:

答案 0 :(得分:2)

如果你想到一座摩天大楼,你的A(1,:,:)就在第一层,这个操作不可避免地发生在第三层。

您可以使用reshape()squeeze()permute()来摆脱单身人士维度:

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

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

答案 1 :(得分:2)

您想要使用删除单身尺寸的函数squeeze

B = squeeze(A(1,:,:))