您的位置:

掌握Matlab的find函数

一、find函数的概述

find函数是Matlab中常用的函数之一,它用于查找数组中符合条件的元素。具体来说,find函数可以返回一个数组中非零元素的下标,也可以返回一个逻辑数组。


A = [1,0,2,0,3,0];
B = find(A);
%输出B为1,3,5

二、返回多个输出参数的情况

find函数除了可以返回非零元素的下标外,还可以返回相应元素的值。


A = [1,0,2,0,3,0];
[B,I] = find(A);
%输出B为1,2,3,下标为1,3,5

值得注意的是,当find函数的第一个输入参数为逻辑数组时,默认情况下返回的是逻辑数组元素的下标,如果需要返回逻辑数组元素的值,需要在find函数的参数列表中将第二个参数设置为1。

三、find函数的高级用法

3.1 查找符合条件的最小值或最大值

find函数还可以用于查找数组中符合条件的最小值或最大值的下标。例如,查找数组A中大于2的最小值的下标:


A = [1,2,3,4,5];
B = find(A>2,1,'first');
%输出B为3

其中,第一个参数为符合条件的数组,第二个参数为查找的个数,这里为1,第三个参数表示查找的方向,'first'表示从前往后查找,'last'表示从后往前查找。

3.2 查找数组中重复元素的下标

查找数组中重复元素的下标可以用find函数实现。将数组A与2相减,如果有重复元素,差值就会为0。然后用find函数查找差值为0的下标即可。


A = [1,2,3,2,4,5];
B = find(A - 2 == 0);
%输出B为2,4

3.3 查找多个数组中符合条件的元素

使用find函数还可以查找多个数组中符合条件的元素。例如,查找数组A和B中大于3的元素:


A = [1,2,3,4,5];
B = [2,4,6,8,10];
[C,D] = find([A,B]>3);
%输出C为1,2,3,4,5,6;D为4,5,5,4,5,5

其中,[A,B]将数组A和B按列合并成一个新的数组,find函数查找符合条件的元素。

3.4 使用逻辑运算符查找符合条件的元素

使用逻辑运算符可以更灵活地查找符合条件的元素。例如,查找数组A中既是偶数又是大于2的元素:


A = [1,2,3,4,5];
B = find(mod(A,2) == 0 & A>2);
%输出B为4

其中,第一个条件用mod函数判断偶数,第二个条件为A>2。