matlab - MATLAB 中的矩阵到对角矩阵

标签 matlab matrix diagonal

<分区>

假设我在 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 的列。我知道如何使用 for 遍历 A 的列然后连接所有结果来执行此操作,但我正在寻找一种更短的方法来执行此操作。请分享您的想法。

最佳答案

B(repmat(eye(3),3,1)==1) = A;
reshape(B, [], 3)

关于matlab - MATLAB 中的矩阵到对角矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16389541/

相关文章:

matlab - 放置颜色条后如何保持子图大小不变

c - 如何在 C NOT C++ 中将 Mat 转换为 IplImage

html - 如何用对 Angular 线 div 制作形状?

python - 访问 Numpy 3 维数组中的短对角线元素

c++ - 在 MATLAB 上使用 G++ 构建问题

matlab - 使用不匹配的向量创建矩阵

计算两幅图像水平和垂直偏移量的matlab代码

c++ - 在 C++ 中将对象存储在二维 Sprite 矩阵中

c++ - 在特征库中的大矩阵中创建子矩阵

python-3.x - 通过堆叠对角 K 矩阵来创建一个新的大矩阵