如何在MATLAB中索引3-D矩阵的对角线?

时间:2011-04-08 17:53:02

标签: matlab indexing multidimensional-array matrix diagonal

我有一个M-by-M-by-N矩阵,它是N个M-by-M矩阵的串联。我想通过获取每个M-by-M子矩阵的对角线并将它们连接在一起来将该矩阵缩减为M-by-N矩阵。我怎样才能以简单的矢量化方式做到这一点?

1 个答案:

答案 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及更高版本时,此功能才有效。如果您的版本早于此版本,请改用虚拟变量。