# using find function and logical array

77 views (last 30 days)

Show older comments

If i have a matrix Z=[1 0 1;0 1 0;1 0 1];

>> find(Z==1)

ans =

1

3

5

7

9

>> find(Z(Z==1))

ans =

1

2

3

4

5

Why does the find(Z(Z==1)) produces the above output?

##### 0 Comments

### Accepted Answer

Birdman
on 5 Jun 2018

Edited: Birdman
on 5 Jun 2018

Because

Z(Z==1)

will produce

1

1

1

1

1

which is a new column vector generated from the initial line. Then, you want to find the Z(Z==1) which is equivalent to Z(Z==1)~=0, therefore you obtain

1

2

3

4

5

which are the indices of all ones in your vector.

### More Answers (2)

monika shivhare
on 5 Jun 2018

find(M) takes the matrix given in argument M, and returns matrix of indexes in M where value at that index in M is not zero. Z==1 gives a logical matrix of size(Z) showing 1 at index where value of Z is equal to 1.

>> Z==1

ans =

3×3 logical array

1 0 1

0 1 0

1 0 1

logical indexing of Z returns a array of elements of Z where logical value at that index is 1. So, Z(Z==1) gives array of elements of Z where (Z==1) has value 1

>> Z(Z==1)

ans =

1

1

1

1

1

Now, if we execute find(Z(Z==1)), it will return indexes of Z(Z==1) where value of Z(Z==1) is not zero. Value of Z(Z==1) is nonzero at index [1,2,3,4,5]. Hence,

>> find(Z(Z==1))

ans =

1

2

3

4

5

##### 2 Comments

Walter Roberson
on 5 Jun 2018

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!