在Matlab中创建稀疏块对角矩阵

时间:2015-08-03 19:24:03

标签: matlab matrix sparse-matrix

假设B是Matlab中稀疏矩阵的单元阵列,我想形成一个稀疏块对角矩阵M,其对角块是存储在B中的矩阵。最简单/最有效的方法是什么?

1 个答案:

答案 0 :(得分:3)

对从单元格数组生成的blkdiag使用comma-separated list

result = blkdiag(B{:});

例如,使用

B = {sparse([1 0 0; 2 2 0; 3 3 3]), 4*speye(2)};

这会产生

>> result
result =
   (1,1)        1
   (2,1)        2
   (3,1)        3
   (2,2)        2
   (3,2)        3
   (3,3)        3
   (4,4)        4
   (5,5)        4
>> full(result)
ans =
     1     0     0     0     0
     2     2     0     0     0
     3     3     3     0     0
     0     0     0     4     0
     0     0     0     0     4