## FIND Find Non-zero Elements of An Array

Section: Array Generation and Manipulations

### Usage

Returns a vector that contains the indicies of all non-zero elements in an array. The usage isy = find(x)

The indices returned are generalized column indices, meaning that if
the array `x`

is of size `[d1,d2,...,dn]`

, and the
element `x(i1,i2,...,in)`

is nonzero, then `y`

will contain the integer

The second syntax for the `find`

command is

[r,c] = find(x)

which returns the row and column index of the nonzero entries of `x`

.
The third syntax for the `find`

command also returns the values

[r,c,v] = find(x).

Note that if the argument is a row vector, then the returned vectors
are also row vectors. This form is particularly useful for converting
sparse matrices into IJV form.
The `find`

command also supports some additional arguments. Each of the
above forms can be combined with an integer indicating how many results
to return:

y = find(x,k)

where `k`

is the maximum number of results to return. This form will return
the first `k`

results. You can also specify an optional flag indicating
whether to take the first or last `k`

values:

y = find(x,k,'first') y = find(x,k,'last')

in the case of the `'last'`

argument, the last `k`

values are returned.

### Example

Some simple examples of its usage, and some common uses of`find`

in FreeMat programs.
--> a = [1,2,5,2,4]; --> find(a==2) ans = 2 4

Here is an example of using find to replace elements of `A`

that are `0`

with the number `5`

.

--> A = [1,0,3;0,2,1;3,0,0] A = 1 0 3 0 2 1 3 0 0 --> n = find(A==0) n = 2 4 6 9 --> A(n) = 5 A = 1 5 3 5 2 1 3 5 5

Incidentally, a better way to achieve the same concept is:

--> A = [1,0,3;0,2,1;3,0,0] A = 1 0 3 0 2 1 3 0 0 --> A(A==0) = 5 A = 1 5 3 5 2 1 3 5 5

Now, we can also return the indices as row and column indices using the two argument
form of `find`

:

--> A = [1,0,3;0,2,1;3,0,0] A = 1 0 3 0 2 1 3 0 0 --> [r,c] = find(A) r = 1 3 2 1 2 c = 1 1 2 3 3

Or the three argument form of `find`

, which returns the value also:

--> [r,c,v] = find(A) r = 1 3 2 1 2 c = 1 1 2 3 3 v = 1 3 2 3 1