Find non-zero elements in a 3-D matrix

Hi,
I have a 3-D matrix containing some non-zero numerical values.I want to find the indices of these non-zero elements.
I know find() can give me row and column, but it doesn't work for a 3-D matrix. Is there another function I can use?

1 Comment

You can use nnz(matrix), it gives you number of all non-zero elements.

Sign in to comment.

 Accepted Answer

Why do you assume, that find() does not work for 3D arrays? Of course it does work. When used with a single output, it replies the linear index. Using this is faster than the 3 separated indices, but you can use ind2sub for a conversion:
ind = find(A);
[i1, i2, i3] = ind2sub(size(A), ind);

4 Comments

Yes, you are right! Thanks a lot!
Thanks a lot!
How do you reshape it in the form of the original matrix

Sign in to comment.

More Answers (0)

Categories

Asked:

on 11 Jul 2013

Commented:

on 20 Dec 2021

Community Treasure Hunt

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

Start Hunting!