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