【问题标题】:Creating a sparse block diagonal matrix in Matlab在 Matlab 中创建稀疏块对角矩阵
【发布时间】:2015-08-03 19:24:03
【问题描述】:

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

【问题讨论】:

    标签: matlab matrix sparse-matrix


    【解决方案1】:

    在从元胞数组生成的comma-separated list 上使用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
    

    【讨论】:

      猜你喜欢
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      相关资源
      最近更新 更多