matlab如何用find函数找出一个连续数组成的向量中不含某个数的位置

matlab如何用find函数找出一个连续数组成的向量中不含某个数的位置,第1张

A=[1 4 3 1 5];

a1=find(A~=2);%找出不等于2的位置

a2=find(A==2);%找出2的位置,结果为空,即不存在2

b=find(A==1);%找出1的位置

c=length(b);%不等于1的个数

其实,能看MATLAB的帮助文档,就能够知道大概的意思了

find - Find indices and values of nonzero elements

Syntax

ind = find(X)

ind = find(X, k)

ind = find(X, k, 'first')

ind = find(X, k, 'last')

[row,col] = find(X, )

[row,col,v] = find(X, )

翻译过来就是 --

ind = find(X) 查找矩阵X中的非零元,记录其下标位置于ind中,举个例子,如果

X = [1 2 0 3

3 0 0 4

0 1 0 3]

那么find(X)的结果ind = [1 2 4 6 10 11 12]', 这是按列来的,从第一列依次往后面数,等同于

Y = [1 3 0 2 0 1 0 0 0 3 4 3]; ind = find(Y);

那么为了更准确的得到行和列的指标,那么你可以输出两个结果,也就是

[row,col] = find(X), row代表行指标,col代表列指标,不甘心的话,还可以输出三个

[row,col,val] = find(X), 第三个val表示查找到对应位置非零元的值。

类似的,ind = find(X, k) 返回前k个非零元的指标

ind = find(X,k,'last') 返回后k个非零元的指标

+++++++++++++++++++++++++++++++++++++++++++++++++

一般情况下,find和逻辑矩阵用的很多,比方说,一个矩阵A中,想找到其中大于100数的位置和值,那么就可以用

[row,col] = find(A > 100);

那么A(row,col)就是那些大于100的数值了。

找到A中大于100,小于1000数的位置,可以输入

[row,col] = find(A>100 & A<1000);

find函数是找到某个元素的意思。

A=(find(Z(:,2)==i))其实可以认为是判断矩阵Z第2列元素是不是从1到8,A得到的是满足find函数的元素的索引,就是说第几个元素满足条件

[r,c,v]=find(A),找到矩阵A中不为0的元素并返回

r找到的行,v找到的列,不为0元素的值

例如你用[r c v]=find([3 0;0 4]);

也就是矩阵|3 0|,从中找不为0的数,就会返回

|0 4|

r =

1

2

c =

1

2

v =

3

4

其中r c v的长度相等,一一对应表示

找到非零元素是 1行1列的3,而2行2列的4

然而通常多数用find来需找符合逻辑判断条件的元素的下标

其实,这个时候是分开两部来做的

首先逻辑判断条件实际上是一个表达式,可以返回一个逻辑矩阵

返回的矩阵中对应原来符合逻辑条件的元素的位置就会是1,不符合条件的就是0

你可以试一下 刚才的矩阵

X=[3 0;0 4];

X>2

ans =

1 0

0 1

返回的矩阵中符合条件大于2的位置是1,不符合的位置是0

然后我们再用find去寻找时r,c返回了不为0的元素的行列位置,而v返回的值就都是1了

由于通常我们用find函数多是find一个逻辑表达式,也就是不是0就是1的矩阵

所以的到的v都是1,平常我们就没有必要反会它了

但是实际上find是找所有非零元素的,如果有一天你需要得到矩阵中多有非零元素的值

的时候,别忘了可以利用这个返回的v

find函数用于返回所需要元素的所在位置 (位置的判定:在矩阵中,第一列开始,自上而下,依次为1,2,3,然后再从第二列,第三列依次往后数)

find(A)返回矩阵A中非零元素所在位置

>> A = [1 0 4 -3 0 0 0 8 6];

>> X = find(A)

X =

1 3 4 8 9

find(A>5)返回矩阵A中大于5的元素所在位置

>> find(A>5)

ans =

8 9

[i,j,v]=find(A) 返回矩阵A中非零元素所在的行i,列j,和元素的值v(按所在位置先后顺序输出)

>> A=[3 2 0; -5 0 7; 0 0 1];

>> [i,j,v]=find(A)

i =

1

2

1

2

3

j =

1

1

2

3

3

v =

3

-5

2

7

1

find(A>m,4)返回矩阵A中前四个数值大于m的元素所在位置

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/12184215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存