Matlab多维矩阵在内存中存储顺序是按照从前到后每列每列顺序存储的,当第一个维度数据存满后,第二个维度数据增加一,依次类推,在涉及到高维(至少三维)矩阵时,了解到数据的存储顺序对于索引数值来说有很大用处。
(1)二维数组
按上述说的,二维数组的存储方式也是先列后行。比如生成5*5的矩阵如下:
for i=1:5
for j=1:5
aa(i,j)=rand();
end
end
得到:
aa =
0.3998 0.2599 0.8001 0.4314 0.9106
0.1818 0.2638 0.1455 0.1361 0.8693
0.5797 0.5499 0.1450 0.8530 0.6221
0.3510 0.5132 0.4018 0.0760 0.2399
0.1233 0.1839 0.2400 0.4173 0.0497
明显总共有25个数据,那么内存中的顺序就为先第一列值,接着第二列值,等等。当索引时,aa(1) = 0.3998,aa(10) = 0.1839(注意不是0.8693,)0.8693应该是aa(22)。
(2)三维数组
二维数组相对简单,当维数高于3以后,就相对复杂了。比如还是生成随机三维矩阵如下:
for i=1:5
for j=1:5
for k=1:5
ss(i