在 Matlab 中创建稀疏块对角矩阵
Creating a sparse block diagonal matrix in Matlab
假设 B 是 Matlab 中的稀疏矩阵元胞数组,我想形成一个稀疏块对角矩阵 M,其对角块是存储在 B 中的矩阵。最简单/最有效的方法是什么?
使用blkdiag
on a 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
假设 B 是 Matlab 中的稀疏矩阵元胞数组,我想形成一个稀疏块对角矩阵 M,其对角块是存储在 B 中的矩阵。最简单/最有效的方法是什么?
使用blkdiag
on a 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