一、函数调用格式及说明

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);        %创建一个423维的全零数组
Y([1 12 19 21])=1;     %令三维数组的第1121921个元素的值为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组成的逻辑矩阵。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐