对于一个矩阵,在内存中有两种存储顺序:

对于下面的矩阵:

按列优先次序

可以有两种存储方式:左为列优先,右为行优先。

按列优先次序

顾名思义,列优先:优先按列存储,先存完第一列再存第二列,行优先同理。

C/C++中矩阵的存储为行优先,但Matlab中是列优先准则,在不同语言间读取数据时需要注意这点,同时在写Matlab时要尽量取一个二维数组的列,而不是行。

扩展到N维矩阵,列优先意味着存储时第一个维度先变化,即存储顺序为(0,0,0,...)、(1,0,0,...)、(max,0,0,...)、(0,1,0,...)、(1,1,0,...),

行优先意味着最后一个维度先变化。

p.s:在处理数据时,说明数据的顺序需要表明1)维度安排和 2)是否是行\列优先,这两个信息缺一不可。

p.s:caffe的Blob、numpy的array、OpenCV的Mat都是和C语言一样,是行优先的。

p.s:貌似只有Matlab中的矩阵是列优先。

相关文章:

  • 2020-07-29
  • 2022-12-23
  • 2022-12-23
  • 2021-09-29
  • 2022-02-02
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-19
  • 2021-09-20
  • 2021-09-27
  • 2021-10-04
  • 2021-12-24
相关资源
相似解决方案