MATLAB Answers

How to find the position of the elements of a matrix?

415 views (last 30 days)
I have a 3x3 matrix: J=[0 3 4;3 0 8;4 8 0]
and I want to know in which position the elements exist. For example that 8 exists in second row and third column (2,3) and (3,2) too.
After that I want a new matrix with the value (i.e. 8) in one column and their ''coordinates'' (i.e. 2,3) in a column side by side.
Paul Shoemaker
Paul Shoemaker on 3 Feb 2020
Yes, Steven Lord makes a good point: usage may drive you a different way. This is why it's helpful for those posting questions to explain what their end objective is, not just how to perform some specific mechanical action.
Similar to Steven's example, you can also change the original "J" variable where a certain condition is met:
J(J==8) = NaN; % efficient way to change all occurrences of "8" in the original matrix to be NaN's
Paul S

Sign in to comment.

Accepted Answer

Paul Shoemaker
Paul Shoemaker on 3 Feb 2020
Check out the ind2sub Matlab function.
Paul Shoemaker
Guillaume on 3 Feb 2020
Hum, this is rather convoluted! For 2D matrices,
[i,j] = ind2sub(size(J),find(J==8));
is simply:
[i, j] = find(J == 8)
For ND matrices, N >= 3, then indeed it makes sense to use ind2sub.

Sign in to comment.

More Answers (1)

giorgos kazas
giorgos kazas on 4 Feb 2020
Thank you to everyone for the input.
I have also another question.
Do you know how can I get the results from "disp([i j])" into a matrix? Because I want to create a matrix with the values in one column and their position in the second-third column.

Community Treasure Hunt

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

Start Hunting!