MATLAB中的矩阵到对角矩阵

参见英文答案 > How to vectorize row-wise diagonalization of a matrix                                    4个
假设我在MATLAB中有一个矩阵

A = [1 2 3; 
     4 5 6; 
     7 8 9]

我想获得一个表格矩阵

B = [1 0 0;  
     0 4 0; 
     0 0 7;
     2 0 0;
     0 5 0;
     0 0 8;
     3 0 0;
     0 6 0;
     0 0 9]

即矩阵,它是三个对角矩阵的串联,每个矩阵在其对角线上具有矩阵A的列.我知道如何使用A的列上的for循环然后连接所有结果,但我正在寻找一个更短的方法来做到这一点.请分享您的想法.

最佳答案
B(repmat(eye(3),3,1)==1) = A;
reshape(B, [], 3)

转载注明原文:MATLAB中的矩阵到对角矩阵 - 代码日志