短縮版
次のようなマトリックスがある場合:
1 2
3 4
メモリには、[1 2 3 4]
または として保存されますか[1 3 2 4]
。言い換えれば、行列は行または列のアクセスに対してより最適化されていますか?
ロングバージョン
一部のコードを Matlab から NumPy に変換しています。私は、NumPy arrays のデフォルトである多次元配列の C 規則 (つまり、最後のインデックスが非常に迅速に、行列が行ごとに格納される) に慣れています。ただし、Matlab コードでは、次のようなスニペットが常に表示されます (複数の色付きの画像を単一の多次元配列に配置するため)。
images(:, :, :, i) = im
これは、C 規則では最適ではなく、FORTRAN 規則ではより最適化されているように見えます (最初のインデックスは非常に高速で、行列は列ごとに格納されます)。では、Matlab がこの 2 番目のスタイルを使用し、列操作に対してより最適化されているのは正しいでしょうか?