【发布时间】:2013-11-01 21:03:13
【问题描述】:
我有一个很长的向量 1xr v,和一个很长的向量 w 1xs,还有一个矩阵 A rxs,它是稀疏的(但尺寸很大)。
我希望 Matlab 会优化以下内容,这样我就不会遇到内存问题:
A./(v'*w)
但似乎 Matlab 实际上正在尝试生成完整的 v'*w 矩阵,因为我遇到了内存不足的问题。有没有办法克服这个问题?请注意,不需要计算所有v'*w,因为A 的许多值都是0。
编辑:如果可能的话,一种方法是A(find(A))./(v'*w)(find(A));
但是您不能选择矩阵的子集(在这种情况下为v'*w)而不先计算它并将其放入变量中。
【问题讨论】:
-
你可能想改用
spfun-- "Apply function to nonzero sparse matrix elements" -
mmm... spfun 可能是一个很好的线索,但我不确定在这种情况下如何使用它。首先,被评估的函数不知道它所应用的矩阵单元的索引。
标签: matlab matrix sparse-matrix