非常に長いベクトル 1xr v
、非常に長いベクトルw
1xs 、およびスパースな行列A
rxs があります (ただし、次元が非常に大きい)。
以下がMatlabによって最適化されることを期待していたので、メモリの問題は発生しません。
A./(v'*w)
しかし、メモリ不足の問題が発生しているため、Matlab が実際に完全なv'*w
行列を生成しようとしているようです。これを克服する方法はありますか?v'*w
の多くの値は であるため、A
すべてを計算する必要はないことに注意してください0
。
編集:それが可能であれば、それを行う1つの方法はA(find(A))./(v'*w)(find(A));
v'*w
ただし、最初に計算して変数に入れなければ、行列のサブセット (この場合) を選択することはできません。