我有一个M-by-M-by-N矩阵,它是N个M-by-M矩阵的串联。我想通过获取每个M-by-M子矩阵的对角线并将它们连接在一起来将该矩阵缩减为M-by-N矩阵。我怎样才能以简单的矢量化方式做到这一点?
答案 0 :(得分:3)
您可以通过获取对角线的线性索引并使用它来形成新矩阵
来实现[M,~,N]=size(A);%# A is your matrix
indx=cumsum([1:(M+1):M^2; M^2.*ones(N-1,M)]);%#diagonal indices
B=A(indx');%'# transpose to get MxN
在上面,我使用~
来忽略函数的输出。但是,只有在使用MATLAB R2009b及更高版本时,此功能才有效。如果您的版本早于此版本,请改用虚拟变量。