行列の操作において、​行方向優先と列方向優​先のどちらが速いです​か?

39 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2019 年 4 月 3 日
編集済み: MathWorks Support Team 2024 年 4 月 17 日 16:00
コロンを使用して以下のような行列の操作をしています。
 
A(i, :)
 
ループ内で行列 A内のi番目の行のデータを集めているのですが、ループの回数を増やした際にさらに高速に処理をしたいと思います。
 
 

採用された回答

MathWorks Support Team
MathWorks Support Team 2024 年 4 月 17 日 0:00
編集済み: MathWorks Support Team 2024 年 4 月 17 日 16:00
2次元またはそれ以上の行列の操作を行う場合、一般的には列方向で行列の要素にアクセスするほうが高速です。
これは、一般的なPCでは例えば行列データの参照など、メモリアクセスの際には高速化のためにキャッシュを使用していますが、MATLABでは行列データを列方向でメモリにストアするため、列方向で行列の要素にアクセスするほうが、キャッシュの効果を得ることができるためです。
 
以下のURLの「Store and Access Data in Columns」の部分もご参考ください。
一般的なPC環境ではCode segment 2のスクリプトのほうが速くなります。これは、内側のfor文で、rを単調増加させる方向(列方向でのアクセス)になっているためです。 
 
 

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangetable についてさらに検索

タグ

タグが未入力です。

製品


リリース

R2008a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!