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

조회 수: 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 CenterFile Exchange에서 table에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

제품


릴리스

R2008a

Community Treasure Hunt

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

Start Hunting!