简版
如果我有这样的矩阵:
1 2
3 4
在内存中,矩阵是以
[1 2 3 4]
还是[1 3 2 4]
的形式存储的?换句话说,矩阵对于行访问还是列访问进行了更多的优化?
长版
我正在将一些Matlab代码翻译成NumPy。我习惯于使用C约定来处理多维数组(即最后一个索引变化最快,矩阵按行存储),这是NumPy数组的默认设置。然而,在Matlab代码中,我经常看到像这样的片段(用于在单个多维数组中排列几个彩色图像):
images(:, :, :, i) = im
这种方式看起来不太符合C语言的规范,更适用于FORTRAN的规范(第一个索引变化最快,矩阵按列存储)。那么,Matlab是否使用这种第二种风格并且更加优化了列操作呢?