基本概念和公式简述
size(A)函数:
得到的是由两个数组成的一个行向量,第一个数是矩阵A的行,第二个数为矩阵A的列
序号:(x,y)
下标:通过计算得到的一个数
下标计算公式:(y-1)*m+x
*公式对应的条件是已知矩阵A为m*n,求序号为(x,y)所对应数的下标
已知序号求下标——sub2ind函数(需要已知矩阵)
格式:D=sub2ind(S,I,J)
当只对一个数求下标:
未知量 | 已知量 | ||
D | S | I | J |
要求的下标值 | 矩阵的行数和列数 所组成的向量 |
要求数的行号 | 要求数的列号 |
例:
已知矩阵A=[4 5 6] ,要求序号为(1,2)数的下标
我们先自己计算一下 (2-1)*1+1=2
matlab验算为
>> A=[4,5,6];
>> D=sub2ind(size(A),1,2)
D =
2
当需要对多个数求下标:
未知量 | 已知量 | ||
D | S | I | J |
要求的下标值 | 矩阵的行数和列数 所组成的向量 |
所有要求数的行号所组成的矩阵 | 所有要求数的列号所组成的矩阵 |
例1:
已知矩阵A= 4 5 6
1 2 3 ,要求序号为(1,2)、(2,2)、(2,1)、(2,3)的下标
我们先自己计算一下
(2-1)*2+1=3
(2-1)*2+2=4
(1-1)*2+2=2
(3-1)*2+2=6
用matlab验证
>> A=[4:6;1:3];
>> D=sub2ind(size(A),[1,2;2,2],[2,2;1,3])
%所有的行数为1、2、2、2 组成行数矩阵[1,2;2,2]
%所有的列数为2、2、1、3 组成列数矩阵[2,2;1,3]
%行数矩阵和列数矩阵依此对应组成要求的序号(1和2组合、2和2组合、2和1组合、2和3组合)
D =
3 4
2 6
例2:
已知矩阵A= 4 5 6,要求序号为(1,1)、(1,2)、(1,3)所对应数的下标
>> A=[4,5,6];
>> D=sub2ind(size(A),[1,1,1],[1,2,3])
D =
1 2 3
已知序号求下标——ind2sub函数(不需要已知矩阵)
格式:[I,J]=ind2sub(S,D)
未知量 | 已知量 | ||
I | J | S | D |
所有要求数的行号 | 所有要求数的列号 | 矩阵的行号和列号所组成的矩阵 | 数的下标 |
例:
已知5*5的矩阵,要求下标为1、3、5所对应的数的序号(x1,y1)、(x2,y2)、(x3,y3)
我们先来列一下公式
(y1-1)*5+x1=1
(y2-1)*5+x2=3
(y3-1)*5+x3=5
用matlab来算一下
>> [I,J]=ind2sub([5,5],[1,3,5])
I =
1 3 5
J =
1 1 1
I依次对应x1、x2、x3
J依次对应y1、y2、y3文章来源:https://www.toymoban.com/news/detail-785314.html
所以结果为(1,1)、(3,1)、(5,1),可以代入刚刚摆好的公式验算一下是否正确文章来源地址https://www.toymoban.com/news/detail-785314.html
到了这里,关于MATLAB | 矩阵元素引用之求下标或序号(sub2ind、ind2sub函数使用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!