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

时间:2020-05-22 21:12:53

标签: matlab matrix block diagonal

我想从另一个矩阵创建一个块对角矩阵。 假设H矩阵是4 x 4矩阵,我想创建一个5 x 5的矩阵,左上部分是H矩阵。底部下部为5。矩阵中的其他部分均为0。 我该怎么做呢?以下代码是我尝试过的代码,但无法正常工作。

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

谢谢。

3 个答案:

答案 0 :(得分:2)

您可以使用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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

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;