
find返回的是满足条件的索引向量
满足条件的是几个,返回的就是几个数组成的向量
若只有一个满足条件,返回的当然是只有一个数的向量
例如:
>> a=[1,2,3]
a =
1 2 3
>> u=find(a>min(a))
u =
2 3
>>
find函数是找到某个元素的意思。
A=(find(Z(:,2)==i))其实可以认为是判断矩阵Z第2列元素是不是从1到8,A得到的是满足find函数的元素的索引,就是说第几个元素满足条件
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);
rem(p,i)表示p除以i的余数
find()函数表示找到符合某一条件的结果的位置
该句意思是:找到p向量中,能够整除i,但又不等于i 的值的所在位置
比如,p=[3 4 5 6 7 8 9 10 11 12 13] ,i=2
运行该语句 n=find(rem(p,i)==0&p~=i)
得到n =
2 4 6 8 10
即 p向量中 第 2 4 6 8 10 个数符合条件(是2的整数倍又不等于2)
[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这个函数是寻找某个矩阵,例如A,其中满足某个条件的元素的位置。你用find(max(R))时,先计算max(R),这时仅为一个数,无判别条件,当非零时显示1,为零时,是空你要用find找最小值在数组中的位置,应该是:
find(R==min(R))
相当正确,[r,c,v] = find(X)讲的是找出X中大于0的数,列出他们所在的行,列,值。顺序是先找第一列的从上到下,再找第二列的从上到下,依次类推。
如果是[r,c,v] = find(X>0)的话,v会变成都是1的向量,可以看做是对X>0的判断,值为1表示它是大于0的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)