可参考官方文档:
https://ww2.mathworks.cn/help/matlab/math/matrix-indexing.html
重点说以下线性索引:
可以使用单个下标A(k) 表示matlab矩阵中的元素,MATLAB不会以矩阵和数组在MATLAB命令行窗口中的显示形状存储矩阵和数组,而是会将矩阵和数组存储为单个元素列。这种单个列由矩阵中的所有列组成,没一列都附加到最后一列。
因此,矩阵 A
A = [2 6 9; 4 2 8; 3 5 1] A = 2 6 9 4 2 8 3 5 1
实际上是以序列形式存储在内存中:2,4,3,6,2,5,9,8,1
矩阵A中位于第3行,第2列的元素(值=5)也可以标识为实际存储序列中的第6个元素。要访问此元素,可以使用标准的A(3,2)语法,也可以使用A(6)。
如果提供多个下标,MATLAB 将会基于分配给数组的维度计算存储列的索引。例如,假定 A
之类的二维数组的大小为 [d1 d2]
,其中 d1
表示数组中的行数,d2
表示列数。如果提供两个表示行-列索引的下标 (i, j)
,则偏移为
(j-1) * d1 + i
给定表达式 A(3,2)
,MATLAB 会将 A
的存储列的偏移计算为 (2-1) * 3 + 3
,即 6
。从头开始数六个元素即会到达值 5
。