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

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

3

使用 blkdiag 函数处理由单元数组生成的逗号分隔列表

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接