我有一个单元格数组,其中每个单元格包含不同大小的方形邻接矩阵(例如在MATLAB中)
A = 29x29 double
30x30 double
24x24 double
10x10 double
现在我想从A的每个单元创建一个块对角矩阵B,使得A的每个单元在B中的对角线中
B = [29X29] 0 0 0 0 0 0 0 0 0 0
0 0 [30x30] 0 0 0 0 0 0 0
0 0 0 0 [24X24] 0 0 0
0 0 0 0 0 0 [10x10]
因此B将为NxN,其中N = 29 + 30 + 24 + 10
我尝试使用以下代码,但它没有用。
function B =blockD(A)
n=size(A,1);
for i = 1:n
B=blkdiag(A{i});
end
end
最后,我必须排列归一化矩阵B.
只需使用B = blkdiag(A {:})
octave:4> A(1) = [1,2; 3, 4]
A = {3x1x3 Cell Array}
octave:5> A(2) = [1,2; 6, 4]
A = {3x1x3 Cell Array}
octave:6> A(3) = [1, 7; 5 8]
A = {3x1x3 Cell Array}
octave:7> B = blkdiag(A{:})
B =
1 2 0 0 0 0
3 4 0 0 0 0
0 0 1 2 0 0
0 0 6 4 0 0
0 0 0 0 1 7
0 0 0 0 5 8