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

4 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 3 Apr 2019
コロンを使用して以下のような行列の操作をしています。
A(i, :)
ループ内で行列 A内のi番目の行のデータを集めているのですが、ループの回数を増やした際にさらに高速に処理をしたいと思います。

Accepted Answer

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

More Answers (0)

Categories

Find more on 構造体 in Help Center and File Exchange

Tags

No tags entered yet.

Products


Release

R2008a

Community Treasure Hunt

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

Start Hunting!