标签: matlab projection submatrix
MATLAB问题:
我有一个三维的阵列A(2,2,2)。我想将2x2数组定义为A的子数组,如下所示:
B = A(1,:,:)。
也就是说,我们只是在第一个组件上进行投影。但是matlab现在将这个2x2矩阵视为1x2x2数组,因此我不能做某些事情(比如乘以另一个2x2矩阵)。
如何将B作为A的2x2子阵列?
答案 0 :(得分:2)
如果你想到一座摩天大楼,你的A(1,:,:)就在第一层,这个操作不可避免地发生在第三层。
A(1,:,:)
您可以使用reshape(),squeeze()或permute()来摆脱单身人士维度:
reshape()
squeeze()
permute()
reshape(A(1,:,:),2,2) squeeze(A(1,:,:)) permute(A(1,:,:),[2,3,1])
squeeze()几乎完成所有工作,但它不是内置函数,实际上使用reshape()。预计其他两种选择会更快。
答案 1 :(得分:2)
您想要使用删除单身尺寸的函数squeeze:
squeeze
B = squeeze(A(1,:,:))