MATLAB中ind2sub和sub2ind这对函数,是互逆的一对函数。ind2sub把数组或者矩阵的线性索引转化为相应的下标;sub2ind则正好相反,将下标转化为线性索引。
ind2sub的函数参考:
[ij] = ind2sub(siz,IND)
[I1,I2,I3,...,In] = ind2sub(siz,IND)
sub2ind的函数参考:
linearInd =sub2ind(matrixSize, rowSub, colSub)
linearInd = sub2ind(arraySize, dim1Sub,dim2Sub, dim3Sub, ...)
上述的函数参考中,第一个都是二维的情况,第二个扩展到了多维空间。
matlab数组中元素引用有三种方式:
1.索引:就是由一个整数表示数组中的某一数据,Matlab中按照列进行排序
2.下标:如果是二维,就是行号和列号
3.布尔数
sub2ind函数:就是将下标转换为索引
ind2sub函数:就是在指定矩阵尺寸(size)前提下将给定的索引(index)转化成行列形式
例:
A = magic(2)
1 3
4 2
因为matlab中矩阵按照列进行排列,所以对应元素的索引为:
1 3
2 4
下面使用sub2ind函数查看对应的索引:
sub2ind(size(A),2,1)
2
搜索矩阵A的第二行第一列对应的索引号2。
[i,j] = ind2sub(size(A),3)
i=1,j=2
上式即求矩阵A中第三个元素对应的行、列索引号(矩阵中的位置),矩阵A中第三个元素是3,位于第一行第二列。因为A是一个二维矩阵,所以用两个参数来接收返回值。
A(sub2ind(size(A),1,2))
3