• find函数用来获取向量或矩阵中非0元素的索引 假设X是行向量，则find(X)返回的是一个行向量；X'为列向量，find(X')返回的是一个列向量。 看一个例子：A是一个行向量，B是一个列向量，将B中非0元素的索引添加到A中 ...

find函数用来获取向量或矩阵中非0元素的索引
假设X是行向量，则find(X)返回的是一个行向量；X'为列向量，find(X')返回的是一个列向量。
看一个例子：A是一个行向量，B是一个列向量，将B中非0元素的索引添加到A中
A = [1 2 3];
B = [0;0;0;4;5;6];
A = [A, find(B)];
结果出现错误：
Error using horzcat
CAT arguments dimensions are not consistent.
原因：B是一个列向量，find(B)返回的是一个列向量，而A是行向量，无法进行拼接
正确写法是
A = [A, (find(B))'];

转载于:https://www.cnblogs.com/MrUnwanted/p/3160918.html
展开全文 • X = [1 0 4 -3 0 0 0 8 6]; ind = find(X);找到X中不为0的位置，并返回给ind 结果为：ind = 1 3 4 8 9还可以在find函数中增加条件，比如ind2 = find(X > 2)结果为ind2 = 3 8 9
X = [1 0 4 -3 0 0 0 8 6];
ind = find(X);

找到X中不为0的位置，并返回给ind
结果为：

ind =
1 3 4 8 9

还可以在find函数中增加条件，比如

ind2 = find(X > 2)

结果为

ind2 =
3 8 9
展开全文 • find函数，可以找出矩阵中某个特定值的行列号。本文介绍一种方法，可以模拟find函数的功能。// OpenCVFind.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include using ...
OpenCV和matlab都提供了强大的矩阵处理功能。但matlab也有一些功能是openCV不具备的。如find函数，可以找出矩阵中某个特定值的行列号。本文介绍一种方法，可以模拟find函数的功能。// OpenCVFind.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include using namespace cv;using namespace std;#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_core249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_imgproc249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_highgui249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_ml249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_video249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_features2d249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_calib3d249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_objdetect249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_contrib249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_legacy249d.lib")#pragma comment(lib, "E:\\cv\\opencv\\build\\x86\\vc11\\lib\\opencv_flann249d.lib")int _tmain(int argc, _TCHAR* argv[]){Mat Grayscale_Image, Binary_Image, NonZero_Locations;Grayscale_Image = Mat::eye(2,2,CV_32SC1);Binary_Image = Grayscale_Image == 1;NonZero_Locations.create(Binary_Image.rows, Binary_Image.cols, CV_32SC1);findNonZero(Binary_Image, NonZero_Locations);cout << "Non-Zero Locations = " << NonZero_Locations << endl << endl;std::cin.get();return 0;}程序首先通过一次逻辑运算 Grayscale_Image == 1，把CV_32SC1类型的矩阵转化为逻辑型矩阵。假如没有这一步，程序会崩溃。随后，利用Mat::create函数给NonZero_Locations矩阵分配内存。没有这一步，程序也会崩溃。运行结果给出了两个复合条件的的元素的位置：(0,0)；(1,1)。 与matlab的find函数相比，这个办法比较麻烦：首先要转化源矩阵为布尔型，还要给目标矩阵开辟内存。
展开全文 • ## matlabfind函数详解

万次阅读 2018-07-16 23:05:40
Find 这个函数用处也挺大的，这几天看很多程序都见到这一函数，今天要好好给阐述，了解下 这个函数是为了找到矩阵或者是数组，向量中的非零元素。下面一大段英文没耐心看。看看例子就行了。 第一个用法是 ndices = ...
Find 这个函数用处也挺大的，这几天看很多程序都见到这一函数，今天要好好给阐述，了解下
这个函数是为了找到矩阵或者是数组，向量中的非零元素。下面一大段英文没耐心看。看看例子就行了。
第一个用法是
ndices = find(X)
X = [1 0 4 -3 0 0 0 8 6];
indices = find(X)
返回x中非零元素的序号从1开始
indices =
1     3     4    8     9
若x是个矩阵呢？
x= [1  0 ;1  5 ;4 0 ]
find(x)得到的是
1
2
3
5
是一列矢量，非零元素的序号是按一列一列的算
第二个用法
ind = find(X, k)
ind = find(X, k, ‘first’)
ind = find(X, k, ‘last’)
这三个是找前K个非零元素，前两式功能一致，第三式指从最后一个元素算起。
重点说一下
第三个用法
[row,col] = find(X, …)
[row,col,v] = find(X, …)
例如
X = [3 2 0; -5 0 7; 0 0 1];
[r,c,v] = find(X>2)
r =1
2
c =1
3
v =1
1
这样看看不出什么？看下式就比较明了。

1  2  1    就是说矩阵中第一行第二列的元素满足X>2为真用1来表示。余下的类似。
1  3  1
1 1  1
[r,c,v]
要注意一下这一用法
X = [3 2 0; -5 0 7; 0 0 1];
[r,c,v]= find(X)                           这个得到的v是X中非零的元素，要注意这个区别
r =
1
2
1
2
3
c =
1
1
2
3
3
v =
3
-5
2
7
1
Ps：如果你想求出矩阵中满足某种特定要求的元素，你会想到用find，但这并不是一个好方法
有更加简便的方法如要找f1中小于等于 t的元素。用下式就能够做到
r1=f1(f1<=t);
求矩阵所有元素的均值也不要像C语言那样把所有一个个都加起来利用下式temp1=mean(r1(:));

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, …)

Description

ind = find(X)locates all nonzero elements of array X, and returns the
linear indices ofthose elements in vector ind. If X is a row vector, then ind is a row vector;otherwise, ind is a column vector. If X contains no nonzero elements or is anempty array, then ind is an empty array.

ind = find(X, k) or
ind = find(X, k, ‘first’) returns at most the first k indicescorresponding to the nonzero entries of X. k must be a positive integer, but itcan be of any numeric data type.

ind = find(X, k,’last’) returns at most the last k indices corresponding to the nonzero entriesof X.

[row,col] = find(X, …) returns the rowand column indices of the nonzero entries in the matrix X. This syntax isespecially
useful when working with sparse matrices. If X is an N-dimensionalarray with N > 2, col contains linear indices for the columns. For example,for a 5-by-7-by-3 array X with a nonzero element at X(4,2,3), find returns 4 inrow and 16 in col. That is, (7 columns
in page 1) + (7 columns in page 2) + (2columns in page 3) = 16.

[row,col,v] =find(X, …) returns a column or row vector v of the nonzero entries in X, aswell as row and column indices. If X is a logical expression, then v is alogical array. Output v contains the non-zero elements
of the logical arrayobtained by evaluating the expression X. For example,

A= magic(4)

A =

16     2     3   13

5    11    10    8

9     7     6   12

4    14    15    1

[r,c,v]= find(A>10);

r’, c’, v’

ans =

1     2     4    4     1     3

ans =

1     2     2    3     4     4

ans =

1     1     1    1     1     1

Here the returned vector v is a logicalarray that contains the nonzero elements of N where

N=(A>10)

Examples

Example 1

X = [1 0 4 -3 0 0 0 8 6];

indices = find(X)

returns linear indices for the nonzeroentries of X.

indices =

1     3    4     8     9

Example 2

You can use a logical expression to defineX. For example,

find(X > 2)

returns linear indices corresponding to theentries of X that are greater than 2.

ans =

3     8     9

Example 3

The following find command

X = [3 2 0; -5 0 7; 0 0 1];

[r,c,v] = find(X)

returns a vector of row indices of thenonzero entries of X

r =

1

2

1

2

3

a vector of column indices of the nonzeroentries of X

c =

1

1

2

3

3

and a vector containing the nonzero entriesof X.

v =

3

-5

2

7

1

Example 4

The expression

X = [3 2 0; -5 0 7; 0 0 1];

[r,c,v] = find(X>2)

returns a vector of row indices of thenonzero entries of N where N=(X>2)

r =

1

2

a vector of column indices of the nonzeroentries of N where N=(X>2)

c =

1

3

and a logical array that contains thenonzero elements of N where N=(X>2).

v =

1

1

Recall that when you use find on a logicalexpression, the output vector v does not contain the nonzero entries of theinput array. Instead, it contains the nonzero values returned after evaluatingthe logical expression.

Example 5

Some operations on a vector

x = [11 0  33  0 55]’;

find(x)

ans =

1

3

5

find(x == 0)

ans =

2

4

find(0 < x & x < 10*pi)

ans =

1

Example 6

For the matrix

M = magic(3)

M =

8     1     6

3     5     7

4     9     2

find(M > 3, 4)

returns the indices of the first fourentries of M that are greater than 3.

ans =

1

3

5

6

Example 7

If X is a vector of all zeros, find(X)returns an empty matrix. For example,

indices = find([0;0;0])

indices =

Empty matrix: 0-by-1

转载自：https://blog.csdn.net/h2008066215019910120/article/details/11820363
展开全文 • 我们以向量A=[0 1 2 3 4 5 6 7 8] 为例，在MATLAB主窗口中输入如下命令： A = [0 1 2 3 4 5 6 7 8]; find(A) 将会得到 ans = 2 3 4 5 6 7 8 9 （2）返回矩阵中非零元素的位置 find(A) 我们以矩阵A=[1 2 0 1; 0 2 1 ...
• ## MATLABfind函数用法

千次阅读 2018-06-17 19:36:10
ind = find(X) ind = 1 3 4 8 9返回的是向量X中的非零元素索引值2，X = [1 0 4 -3 0 0 0 8 6]; ind = find(X&gt;2) ind = 3 8 9返回向量中满足大于2的元素的索引值3，当X是个矩阵时，X = ...
• find函数：用于查询非零元素的行和列标志 语法： 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...
• ## MATLABfind函数的运用

千次阅读 2016-09-28 10:14:17
find函数的运用方法： b=find(a) b=find(a,2,'first') b=find(a,2,''last') b=find(a>4) [i,j]=find(a>4) [i,j,v]=find(a) [i,j,v]=find(a>4)
• find(X) %竖着数，分别对应1-9 X1=[1 2 0 1;0 2 1 1;0 0 1 1]; find(X1==1) find(X1,5) %返回X1前5个非0的数 find(X1,1,'last') %返回最后一个非零值的位置find(A,1,‘last’) 自己的问题 find(lon_IS(:,1)...
• find 找到非零元素的索引和值 语法： 1. ind = find(X) 2. ind = find(X, k) 3. ind = find(X, k, 'first') 4. ind = find(X, k, 'last') 5. [row,col] = find(X, ...) 6. [row,col,v] = find(X, ...) 说明...
• find()函数是用来查询满足要求非零值在矩阵中位置的函数，可以返回元素在其中的位置等，下面就通过实例介绍一下不同函数的用法。 返回向量中非零元素的位置 find(A) 我们以向量A=[0 1 2 3 4 5 6 7 8] 为例... 学习 转载
• 上千万条数据判断大于零和小于零并分别进行运算，第一想到if语句...然后重新构思，找到符合条件的数据所在位置，然后再把那个位置的数值运算就好了嘛，用find函数！ so [row1,col1] = find(a(:,1)>=0); [row2,col2]
• 三维曲线plot3函数与plot函数用法十分相似，其调用格式为：plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)其中每一组x,y,z组成一组曲线的坐标参数，选项的定义和plot函数相同。当x,y,z是同维向量时，则x,y...
• MATLAB find()函数二维数组找最值 在python中对应 np.where()函数，取最后一个结果就行！！ 简短截说，上代码 MATLAB源码： [max_Ix, max_Iy]=find(garyimg1==max(max(garyimg1))) max_Ix = max_Ix(1,1); max_Iy = ...
• 有那些相见恨晚的MATLAB绘图命令MATLAB的绘图功能可谓非常的强大，常用的有plot,plot3,subplot,scatter等等，这些函数有许多的参数设置，可以画出各种需求的图。但是这些强大的绘图命令也有无能为力的时候。为什么呢...
• ind = find(X) 查询非零元素的位置 如果X是一个行向量，则返回一个行向量， 否则，返回一个列向量。 如果X全是零元素或者是空数组，则返回一个空数组。 [row,col V] = find(X, ...) 查询...  ...

# matlabfind函数 matlab 订阅