私は大きな疎行列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. 列のブロック対角行列
- 3. スパース行列から別の疎マトリックとしてブロックを抽出する
- 4. matlabの疎な行列のパワー
- 5. 大規模なNSArray - initWithObjects対ArrayWithObjects
- 6. 行列のブロック対角結合
- 7. 行列内の各IDに対して "n"行を抽出する - MATLAB
- 8. 大規模なperlの配列のスローダウン
- 9. C++の三角形と疎行列
- 10. 大規模なSQLスクリプトを実行
- 11. セグメンテーションフォールト、大規模配列
- 12. 大規模なPHP配列ページ設定
- 13. 大規模なネットワーク反復 - 並列性?
- 14. 大規模なデータセット(数千万行)
- 15. 大規模なコミュニティのCMS
- 16. 大規模なグリッドデータセットのストレージ
- 17. のJava:大規模なリスト
- 18. Python Pytablesを使ってMatlabの疎行列をロードする
- 19. scipyのダウンロード大型疎行列
- 20. 中規模大規模プロジェクトの構造
- 21. は、大規模な配列を作りたい大numpyのアレイ
- 22. 非常に大きな疎行列にPCAを適用する
- 23. 大規模な行列計算のためにOpenCLのローカルワーカーを使用する
- 24. Matlab効率的な疎行列の乗算
- 25. matlab対角コード
- 26. 大規模なデータセットでPostgresの列を削除する
- 27. 大規模なウェブサイトをテストする
- 28. 大規模なクエリを実行し、Oracleで行を返す
- 29. 大規模なPythonランダムシェアラー
- 30. PHP - 大規模なPOSTリクエストサーバエラー
@MitchWheat - Iあなたはもっとゆっくりと読むことをお勧めします次の時間:質問は2行目にあります:「どうすればいいですか?」、補足が続きます。 – olamundo
あなたは適切なフォーラムで質問をすることをお勧めします。 –
@MitchWheat - 私は良い答えがあるようですが、このタイプの質問のためのより良いフォーラムがあるなら、私は将来そこに喜んで投稿します。それはどのフォーラムですか? – olamundo