序文: matlab ガイドルールが述べているように、通常、matlab でスパース行列を効率的に作成したい場合は、行列にインデックスのベクトルを作成し、割り当てたい値のベクトルを作成してから、すべての割り当てを 1 つに集中する必要があります。アトミック操作により、matlab が事前に行列を「準備」し、割り当て速度を最適化できるようになります。簡単な例:
A=sparse([]);
inds=some_index_generating_method();
vals=some_value_generating_method();
A(inds)=vals;
私の質問:inds
重複するインデックスが含まれている場合、つまりinds=[4 17 8 17 9]
17 が 2 回繰り返される場合はどうすればよいですか。この場合、私が望んでいるのは、同じインデックスにマップされているすべての値の加算がマトリックスに割り当てられることです。つまり、前の例の場合
A(17)=vals(2)+vals(4) %as inds(2)==inds(4)
これを達成するための簡単で、最も重要なことに、迅速な方法はありますか? 「よりスマートな」方法でインデックスと値を生成する方法がありません。