MATLAB中的spscun稀疏矩阵乘法

时间:2016-01-06 07:27:42

标签: matlab sparse-matrix elementwise-operations

我有一个大小为y的密集列矩阵(m,1)和一个大小为x的稀疏矩阵(m,n)
我想使用yx的每一列进行逐元素乘法 得到的稀疏矩阵的大小仍为(m,n) 加载到内存中的稀疏矩阵x大约为10GB spfun可以帮助我以记忆效率的方式实现我的目标吗?

我很难理解它背后的逻辑。

谢谢。

1 个答案:

答案 0 :(得分:4)

您是否尝试过

out = bsxfun( @times, x, y ); 

spfun更适合于操作x的每个非零元素的元素操作。它不完全适合矩阵向量元素操作 但是,如果您想沿着这一行做某事,可以尝试:

[ii jj xij] = find(x); %// extract non-zeros of x and their locations
out = sparse( ii, jj, xij.*y(ii), size(x,1), size(x,2) );

有关详细信息,请参阅doc find