文章目录
一、函数调用格式及说明
1. k=find(X)
返回数组X中非零元素的位置
- 1.1 如果X为一个非零数,则find返回1;如果X为0,则find返回空数组
X=5;
k1=find(X);
Y=0;
k2=find(Y);
- 1.2 如果X为向量,则find返回的也是一个向量;
X1=[0,5,8,0,2,0]; %X1为行向量
k1=find(X1); %返回的k1也是一个行向量
X2=[0;5;8;0;2;0]; %X2为列向量
k2=find(X2); %返回的k2也是一个列向量
- 1.3 如果X为多维数组,则find按列查找非零元素的位置;
X=[7,6,0;6,3,9;0,0,4]; %X为3×3的二维数组
k1=find(X); %find按列查找非零元素的位置,并返回一个列向量
Y=zeros(4,2,3); %创建一个4行2列3维的全零数组
Y([1 12 19 21])=1; %令三维数组的第1、12、19、21个元素的值为1
[row,col]=find(Y); %row返回非零元素的行下标,col返回的是相当于将三维数组全部放到二维上的列下标
- 1.4 如果X全部为零元素或为空,则find返回一个空数组。
X=[];
k1=find(X);
Y=[0,0;0,0;0,0];
k2=find(Y);
2. k=find(X,n)
返回与X中的非零元素对应的前n个位置
X=[0,6,0;6,3,9;0,0,4];
k1=find(X,6);
k2=find(X,4);
k3=find(X,1);
3. k=find(X,n,direction)
direction可以为’first’(默认)或’last’;
direction为’first’,查找与X中的非零元素对应的前n个位置;
direction为’last’,查找与X中的非零元素对应的后n个位置。
X=[0,6,0;6,3,9;0,0,4];
k1=find(X);
k2=find(X,4,'first');
k3=find(X,4,'last');
k4=find(X,1,'last');
4. [row,col] = find(___)
返回数组X中每个非零元素的行和列下标分别存储在row数组和col数组中,查找元素的顺序依旧是按列查找
X=[0,6,0;6,3,9;0,0,4];
[row,col]=find(X);
5. [row,col,v] = find(___)
返回数组X中每个非零元素的行和列下标及X中所有非零元素的值,以向量形式返回
X=[0,6,0;6,3,9;0,0,4];
[row,col,v]=find(X);
二、函数应用示例
1. 查找矩阵中的零元素和非零元素位置
X=[1 0 2;0 1 1;0 0 4];
k1=find(X); %按列查找X中非零元素位置,并返回列向量
k2=find(~X); %对X使用逻辑not运算符查找零值
2. 查找满足特定条件的元素
%%%%%%%%%% 查找满足一个特定条件的元素位置 %%%%%%%%%%
X1=[1 0 2 5;8 0 1 1;0 7 0 4];
k1=find(X1<2,5); %查找矩阵X1中前5个小于2的元素位置
X1(k1) %在命令行窗口查看X的对应元素
%%%%%%%%%% 查找等于特定值的元素位置 %%%%%%%%%%
X2=1:2:20; %生成1×10的奇整数数组
k2=find(X2==15); %查找等于15的元素位置
%%%%%%%%%% 查找满足多个条件的元素位置 %%%%%%%%%%
X3=[18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21];
[row,col,v]=find(X3>0&X3<10,3); %在4×4矩阵中查找前3个大于0且小于10的元素,返回这些元素的行下标和列下标
注意:此时v返回的是由逻辑值1(true)组成的列向量,而不是元素值,因为关系运算的结果是由1和0组成的逻辑矩阵。