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的元素所在位置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)