0

前言:正如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)

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

4

1 回答 1

4

这可能会有所帮助:

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

在MATLAB 文档中查看更多功能sparse

于 2012-07-31T02:51:05.717 回答