matlab 默认的dimension 指标从1开始,例如sum函数,不指定dimension 就默认对第一个维度求和,被求和掉的应该是内存连续的区域。也就依次存放a(1,1,1),a(2,1,1),····,然后是a(1,2,1),a(2,2,1),```,然后是a(1,1,2),a(2,1,2),```a(1,2,2),a(2,2,2),```
C语言是行优先,a[i][j][k],i,j,相同,k不同,k不同的连续存储,然后续存j+1的(具体大小端另外说—);
下面是转载的,总结的很到位
涉及到在计算机中使用矩阵时,首先会碰到存储矩阵的问题。因为计算机存储空间是先后有序的,如何存储A[m*n]的m*n个元素是个问题,一般有两种:按行优先存储和按列优先存储。
row-major:存成a11,a12,...,amn的顺序。
PASCAL, C/C++,, Python语言中,数组按行优先顺序存储。
行优先顺序推广到多维数组,可规定为先排最右的下标。
column-major:存成a11,a21,...,amn的顺序。
FORTRAN语言,Matlab中,数组按列优先顺序存储。
列优先顺序推广到多维数组,可规定为先排最左的下标。
For example:
序列 A = [1,2,3,4],用Matlab 和 Python 分别reshape为2*2大小:
Matlab中 reshape(A, [2 2]), 得到 [[1 3] [2 4]]
Python中 A.reshape(2,2), 得到[[1 2] [3 4]]
————————————————
版权声明:本文为优快云博主「Andrew_Zhu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/duanlangzhuifeng/article/details/11727513