我有一个非常长的1xr向量v
,一个非常长的1xs向量w
和一个稀疏的rxs矩阵A
(但在维度上非常大)。
我原本期望Matlab能够优化下列代码,以避免内存问题:
A./(v'*w)
但是似乎Matlab实际上正在尝试生成完整的v'*w
矩阵,因为我遇到了内存不足的问题。有没有办法克服这个问题?请注意,并不需要计算所有v'*w
,因为许多A
的值都是0
。
编辑:如果可能的话,一种方法是执行A(find(A))./(v'*w)(find(A));
但是你不能选择一个矩阵的子集(在这种情况下是v'*w
),而不先计算它并将其放入变量中。
spfun
代替 -- "将函数应用于非零稀疏矩阵元素" - Ben Voigt