【问题标题】:matlab: populating a sparse matrix with additionmatlab:用加法填充稀疏矩阵
【发布时间】:2012-07-28 18:01:40
【问题描述】:

前言: 正如 matlab 指南所述,通常,当一个人想要在 matlab 中有效地填充稀疏矩阵时,他应该在矩阵中创建一个索引向量和一个他想要的值向量赋值,然后将所有赋值集中到一个原子操作中,让matlab提前“准备”矩阵,优化赋值速度。一个简单的例子:

A=sparse([]);
inds=some_index_generating_method();
vals=some_value_generating_method();
A(inds)=vals;

我的问题:如果inds 包含重叠索引,即inds=[4 17 8 17 9] 17 重复两次,我该怎么办。 在这种情况下,我想要发生的是矩阵将被分配添加映射到同一索引的所有值,即对于前面的示例

A(17)=vals(2)+vals(4) %as inds(2)==inds(4)

是否有任何直接且最重要的是快速的方法来实现这一目标?我无法以“更智能”的方式生成索引和值。

【问题讨论】:

    标签: matlab sparse-matrix addition assign


    【解决方案1】:

    这可能会有所帮助:

    S = sparse(i,j,s,m,n,nzmax) 使用向量 ij 和 s 来生成一个 m-by-n 稀疏矩阵,使得 S(i(k),j(k)) = s(k) 具有分配给 nzmax 非零的空间。向量ijs 的长度都相同。 s 中任何为零的元素以及 ij 的相应值都将被忽略。 s 的任何具有 ij 重复值的元素被添加在一起

    MATLAB documentation for sparse function查看更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-06
      • 2023-04-05
      • 1970-01-01
      • 2023-04-06
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多