【问题标题】:Sparse matrix multiplication in MATLAB with spfunMATLAB中的稀疏矩阵乘法与spfun
【发布时间】:2016-01-06 07:27:41
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: matlab sparse-matrix elementwise-operations


    【解决方案1】:

    你试过吗?

    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

    【讨论】:

    • 酷,我从来不知道将正常矩阵与稀疏矩阵相乘是可能的,而且它也会导致稀疏
    • 其实我不知道 bsxfun 适用于稀疏矩阵... .
    • @yi416 bsxfun 摇滚!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2011-11-20
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多