0
私はかなり大きな疎なマトリックスを取り扱っています、そのサイズは約150,000 * 150,000です。私はfind
機能が実際に(0.1秒/行)を消費する時間であることがわかっMatlabの疎行列の行から非零要素を扱うにはどうすればよいですか?
tic
H = [];
for i = 1: size(A,2)
[a,b,c] = find(A(i,:)); % extract the rows
add = diff([0 c(2:end) 0]); % the replacing rule
aa = i*ones(1,size(a,2)); % return back the old position of rows
G0 = [aa' b' add']; % put it back the old position with replaced values
H = [H; G0];
end
H1 = H(:,1);
H2 = H(:,2);
H3 = H(:,3);
ADD = sparse(H1,H2,H3,nm,nm,nzmax);
toc
:私は以下のコードのようにルール以下、これらの値を、その列にアクセスする非ゼロ要素を抽出し、交換する必要がありますこのコードとこの現在の疎な行列のサイズでは、この仕事には約33時間かかります。私はそこにいくつかの方法があると信じていますが、私はコーディングやスパース行列を扱うような新生児は本当に恐ろしいです。
私にいくつかのアイデアを教えてもらえますか?
それは時間から秒に、魔法のように動作します!どういうわけか私はセルを使うことはひどいと感じていましたので、私はいつもそれを避けています。しかし、この場合は本当に素晴らしいです!本当に心を開いた!どうもありがとう – chappi