稀疏矩阵值作为另一个矩阵的索引

时间:2015-04-16 10:11:29

标签: matlab matlab-figure matlab-engine

S - N x N稀疏矩阵 A - M x1向量。

S的非零值是A的索引 我想计算一个向量x,以便在i的{​​{1}}条目中计算:{ 对于x的第j行中的每个非零值i,取S并计算所有A[j]&#的总和39;并将其放在j的{​​{1}}条目中。

在伪它应该看起来像这样:

i

我怎么能以高效的方式在 matlab 中做到这一点?

3 个答案:

答案 0 :(得分:1)

让我们尝试使用findaccumarray

[ii jj sij] = find( S );
x = accumarray( ii, A(sij), [1 size(S,1)] );

答案 1 :(得分:0)

这只是矩阵乘法:

x = (S~=0)*A(1:size(S,2));

Matlab使用稀疏矩阵有效地进行矩阵乘法,因此这应该非常快。

答案 2 :(得分:0)

这实际上就像Shai的回答,但是使用非零(S)而不是sij:

[ii jj] = find( S );
x = accumarray( ii, A(nonzeros(S)), [size(S,1), 1] ).'