Asked by Lorenne
on 5 Jun 2018

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?

Answer by Birdman
on 5 Jun 2018

Edited by Birdman
on 5 Jun 2018

Accepted Answer

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.

Answer by 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

Stephen Cobeldick
on 5 Jun 2018

+1 nice and clear explanation!

Lorenne
on 5 Jun 2018

Thanks!!

Sign in to comment.

Answer by Walter Roberson
on 5 Jun 2018

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.