Matlab中find函数的使用简言之:
输入为:寻找的对象和条件 (在哪里找和找什么);
输出为:满足条件的数的位置。
当没有寻找到满足条件的值时,返回空矩阵;
例如在某向量/矩阵中寻找为零的数,寻找不为零的数,寻找某一范围内的数,判断是否有满足条件的数以及有多少等等:
- Example 1.寻找不为零的数:
find函数若不明确写出寻找条件而是仅仅写出寻找的对象(如下面的find(x)),则默认是找出向量/矩阵中不为零的数,并输出其位置:
运行:
1 x = [1,0,8,9,10,-2,-8,-0.5,27]; 2 index = find(x)
结果:
1 index = 2 3 1 3 4 5 6 7 8 9
- Example 2.寻找不为零的数(个人常用):
find(x~=0) 等价于 find(x)
运行:
1 x = [1,0,8,9,10,-2,-8,-0.5,27]; 2 index = find(x~=0)
结果:
1 index = 2 3 1 3 4 5 6 7 8 9
- Example 3.寻找能整除某数的数:
例如在x向量中寻找3的倍数,返回其在x向量中的位置:
运行:
1 x = [1,0,8,9,10,-2,-8,-0.5,27]; 2 index = find(mod(x,3)==0) % 在x中寻找能被3整除(对3取余的结果为0)的数
结果:
1 index = 2 3 2 4 9
- Example 4.在x中寻找某个范围内的数, 返回其在x向量中的位置:
运行:
1 x = [1,0,8,9,10,-2,-8,-0.5,27]; 2 index = find(x>-3&x<=1) % 注意:这里不能写成 find(-3<x<=1)
结果:
1 index = 2 3 1 2 6 8
- Example 5. 在矩阵x中寻找,返回其在x矩阵中的位置:
注意:matlab对矩阵的存储和操作是按照列排序的,所以返回的索引这里是4:
运行:
1 x = [1,0,8;9,10,-2;-8,-0.5,27]; 2 index = find(x==0)
结果:
1 index = 2 3 4