例如,我有一个单元格数组,其中每个单元格包含不同大小的正方形邻接矩阵(在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进行行
答案 0 :(得分:0)
只需使用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