繁体   English   中英

如何从另一个矩阵创建对角矩阵

[英]How to create a diagonal matrix from another matrix

我想从另一个矩阵创建一个块对角矩阵。 假设 H 矩阵是一个 4 x 4 矩阵,我想创建一个 5 x 5 矩阵,左上部分是 H 矩阵。 下底部分为5。矩阵中的其他部分都是0。我该怎么做? 以下代码是我尝试过的代码,但它不起作用。

H_new= [H,0;0,5];

谢谢。

您可以使用blkdiag

>> H = reshape(1:16, 4, 4)
H =

    1    5    9   13
    2    6   10   14
    3    7   11   15
    4    8   12   16

>> H_new = blkdiag(H, 5)
H_new =

    1    5    9   13    0
    2    6   10   14    0
    3    7   11   15    0
    4    8   12   16    0
    0    0    0    0    5

通过查找所涉及的两个矩阵的大小来生成正确数量的 只写0不会自行扩展。

H_new =[ H  zeros(size(H,1),size(brm,2));    %brm=5
         zeros(size(brm,1),size(H,2))  brm];     

^ 适用于任何二维大小的H和右下角矩阵 ( brm ):

您可以分配到预先分配的缓冲区:

H = eye(4);
K = 5;
output = zeros(size(H) + size(K));
output(1:size(H, 1), 1:size(H, 2)) = H;
output(size(H, 1) + 1:end, size(H, 2) + 1:end) = K;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM