私は大きな疎行列A
を持っており、Aの3X3ブロック対角の疎行列を作成したいと思います。 A
は非常に大きく、スパースなので、反復を使用するメソッドはすべて遅くなり、完全な(疎ではない)マトリックスを作成するメソッドを使用するメソッドは、あまりにも多くのメモリを占有します。matlab:大規模な疎行列のブロック対角を抽出する
0
A
答えて
1
私が正しく理解していれば、ここにいくつかのコードがあります(%%%%%%%%%%%
の部分を見てください)。for
ループがあるにもかかわらず、私には妥当と思われるタイミングの結果があります。あなたは、あなたのアプリケーション用にチューニングするために持っていること(再フォーマットを行うことよりも、それが実際にランダムなテスト行列を生成するために多くの時間がかかります注)
for N= [(3:3:12) (15:600:9000)]
bigsparse = sprand(N,N,0.1);
tic;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
origSize = size(bigsparse);
diagSize = 3;
numDiags = size(bigsparse,1)/diagSize;
assert(numDiags == floor(numDiags))
bigsparse_diagonals = spalloc(origSize(1), origSize(2), ceil(prod(origSize)*0.1));
for ix=(1:numDiags)-1
ixsCurrent = ix*diagSize+[1:diagSize];
bigsparse_diagonals(ixsCurrent,ixsCurrent) = ...
bigsparse(ixsCurrent,ixsCurrent);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf(1,'%5d size --> %6.5f seconds \n', N, toc)
end
タイミング結果:。
3 size --> 0.00135 seconds 6 size --> 0.00014 seconds 9 size --> 0.00013 seconds 12 size --> 0.00014 seconds 15 size --> 0.00015 seconds 615 size --> 0.00392 seconds 1215 size --> 0.00874 seconds 1815 size --> 0.01537 seconds 2415 size --> 0.02570 seconds 3015 size --> 0.03595 seconds 3615 size --> 0.05007 seconds 4215 size --> 0.06420 seconds 4815 size --> 0.08690 seconds 5415 size --> 0.10077 seconds 6015 size --> 0.13322 seconds 6615 size --> 0.14923 seconds 7215 size --> 0.17562 seconds 7815 size --> 0.37371 seconds 8415 size --> 0.23060 seconds
+0
あなたは完全に理解しました:)それはまさに私が探していたものでした、ありがとう! – olamundo
関連する問題
- 1. 疎行列の行から疎な対角行列を作成する
- 2. matlabでブロック三重対角行列を作成する
- 3. 列のブロック対角行列
- 4. スパース行列から別の疎マトリックとしてブロックを抽出する
- 5. ブロック疎行列で大きな線形システムを解く
- 6. Tensorflowのブロック対角行列
- 7. 大規模なMATLABテーブルで文字列(キーワード)を検索
- 8. matlabの疎な行列のパワー
- 9. 特異疎行列MATLAB
- 10. 大規模なNSArray - initWithObjects対ArrayWithObjects
- 11. 三重対称で疎な行列をPythonで対角化する
- 12. ブロック三角対角行列の作成
- 13. Matlabで大規模なデータセットを整理する
- 14. 大規模な隣接行列を適切にプロットするR
- 15. 大規模なperlの配列のスローダウン
- 16. 行列内の各IDに対して "n"行を抽出する - MATLAB
- 17. Tensorflow:その対角線から疎な行列を構成する
- 18. 大規模なSQLスクリプトを実行
- 19. 大規模な文字列の比較
- 20. MATLABワークスペースからEigenの複雑な疎行列をマッピングする
- 21. 行列のブロック対角結合
- 22. セグメンテーションフォールト、大規模配列
- 23. 角1:大規模なng-repeatのすべてのチェックボックスをチェック
- 24. 大規模なデータセット(数千万行)
- 25. 大規模なネットワーク反復 - 並列性?
- 26. 大規模なPHP配列ページ設定
- 27. 大規模な行列を使ったsympyコンパイル関数
- 28. 大規模なDDoS攻撃に対する防御メカニズム
- 29. MATLABで行列の対角を再対角化する方法は?
- 30. のJava:大規模なリスト
@MitchWheat - Iあなたはもっとゆっくりと読むことをお勧めします次の時間:質問は2行目にあります:「どうすればいいですか?」、補足が続きます。 – olamundo
あなたは適切なフォーラムで質問をすることをお勧めします。 –
@MitchWheat - 私は良い答えがあるようですが、このタイプの質問のためのより良いフォーラムがあるなら、私は将来そこに喜んで投稿します。それはどのフォーラムですか? – olamundo