MATLAB 中的稀疏矩阵乘法与 spfun

2 matlab sparse-matrix elementwise-operations

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

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

谢谢你。

Sha*_*hai 5

你试过吗?

out = bsxfun( @times, x, y ); 
Run Code Online (Sandbox Code Playgroud)

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) );
Run Code Online (Sandbox Code Playgroud)

有关doc find更多信息,请参阅。

  • @yi416 `bsxfun` 太棒了!! (2认同)