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

问题描述 投票:0回答:1

我想从另一个矩阵中创建一个块状对角线矩阵.假设H矩阵是一个4乘4的矩阵,我想创建一个5乘5的矩阵,左上角是H矩阵,下角是5,矩阵中其他部分都是0。矩阵中的其他部分都是0.我该怎么做呢?下面的代码是我试过的代码,但是没有用。

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

谢谢。

matlab matrix block diagonal
1个回答
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
投票

你可以分配到一个预先分配的缓冲区。

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;

1
投票

生成正确的数量 通过找出所涉及的两个矩阵的大小。只需写出 0 不自行展开。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.