我想从另一个矩阵创建一个块对角矩阵。 假设H矩阵是4 x 4矩阵,我想创建一个5 x 5的矩阵,左上部分是H矩阵。底部下部为5。矩阵中的其他部分均为0。 我该怎么做呢?以下代码是我尝试过的代码,但无法正常工作。
H_new= [H,0;0,5];
谢谢。
答案 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;