一.基本用法
返回矩阵或向量中非零元素的索引
注意:matlab中下标从1开始
举例:
(1)向量
返回非零元素下标
find(vector)
x=[1 2 3 0 0 6 7 8 9];
find(x)ans =1 2 3 6 7 8 9
返回前k个非零元素的下标
find(vector,k)
或find(vector,k,‘first’)
x=[1 2 3 0 0 6 7 8 9];
find(x,2)ans =1 2find(x,2,'first')ans =1 2
返回后k个非零元素的下标
x=[1 2 3 0 0 6 7 8 9];
find(x,2,'last')ans =8 9
(2)矩阵
a.返回下标
find(matrix)
x=[1 2 3;0 0 4;7 9 0];
>> find(x)ans =134678
注意:matlab中存储矩阵是按列存储的
举例:
x(3)ans =7
b.返回行号与列号
[r,c]=find(matrix)
>> x=[1 2 3;0 0 4;7 9 0];
[r,c]=find(x);
>> [ r,c]ans =1 13 11 23 21 32 3
c.返回行号,列号,取值
[r,c,v]=find(matrix)
>> x=[1 2 3;0 0 4;7 9 0];
>> [r,c,v]=find(x);
>> [r,c,v]ans =1 1 13 1 71 2 23 2 91 3 32 3 4
二.进阶用法
find()函数的功能是找到向量或者矩阵中不为0的元素,还可以找到满足某些条件的元素
举例:
(1)
>> x=[1 2 3 4 5 6 7]x =1 2 3 4 5 6 7>> find(x>=5)ans =5 6 7
(2)
>> x=[1 2 3 4 5 6];
>> find(x==4)ans =4
(3)
>> x=[1 2 3 4 5 6 7 8 9];
>> find(x>3&x<8)ans =4 5 6 7
(4)
判断向量中是否含有某个元素
>> x=[1 2 3 4 5 6 7 8 9];
>> ~isempty(find(3))ans =logical1
isempty(A)
A为空,返回1
A非空,返回0