のベクトルの要素によって、スパース行列のすべての行は、私は疎行列スケールMATLAB
obj.resOp = sparse(row,col,val);
とすぐ
sums = sparse(sum(obj.resOp,2));
行列の各列の和を含むベクターを有します私は何をしたいです
obj.resOp = obj.resOp ./ sums;
各行のrowsumが1になるように行列のすべての行をスケールするでしょう
は、しかし、この最後の行では、MATLABは内部obj.resOp
からフル行列を構築しているようですので、私はこのエラーを取得する:十分に大きな行列のため
Error using ./ Requested 38849x231827 (17.5GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a long time and cause MATLAB to become unresponsive. See array size limit or preference panel for more information.
。
理論的には、フルマトリクスに拡張する必要はないと私は考えています。 obj.resOp
の希薄さを維持しながら、達成したいMATLABの定式化はありますか?
使用しているMATLABのバージョンを知ることはおそらく適切でしょうか? – Wolfie
私はMATLAB 2017aを使用しています。 – fpnick
obj.resOp = inv(diag(sums))* obj.resOp;私に同じ結果を与えるべきであるが、殺される。それは私のベクトルのバグかもしれません。 – fpnick