sizeの密な列行列yと size(m,1)の疎な行列xがあります(m,n)。と のすべての列を
使用して、要素ごとの乗算を実行したいと考えています。
結果のスパース行列のサイズは のままです。
メモリにロードされたときのスパース行列は、約 10GB です。メモリ効率の良い方法で目標を達成するのに役立ちますか
?yx(m,n)xspfun
その背後にあるロジックを理解するのに苦労しています。
ありがとうございました。
sizeの密な列行列yと size(m,1)の疎な行列xがあります(m,n)。と のすべての列を
使用して、要素ごとの乗算を実行したいと考えています。
結果のスパース行列のサイズは のままです。
メモリにロードされたときのスパース行列は、約 10GB です。メモリ効率の良い方法で目標を達成するのに役立ちますか
?yx(m,n)xspfun
その背後にあるロジックを理解するのに苦労しています。
ありがとうございました。
bsxfunを試しましたか?
out = bsxfun( @times, x, y );
spfunのゼロ以外の各要素を操作する要素ごとの操作により適していますx。行列ベクトル要素ごとの操作には正確には適合しません。
ただし、この線に沿って何かをしたい場合は、次のことを試してください。
[ii jj xij] = find(x); %// extract non-zeros of x and their locations
out = sparse( ii, jj, xij.*y(ii), size(x,1), size(x,2) );
詳細については、を参照doc findしてください。