using a value to find index in a matrix?

조회 수: 3 (최근 30일)
Axel Yantosca
Axel Yantosca 2020년 10월 22일
댓글: Walter Roberson 2020년 10월 22일
How would one find the location inside a matrix? In this case I am looking for x, assuming it exists.
Matrix_A = randi([1 100],100,100)
x = randi ([1,100], 1)

채택된 답변

Stephen23
Stephen23 2020년 10월 22일
편집: Stephen23 2020년 10월 22일
The simplest solution is to simply check for equality:
idx = x==Matrix_A;
which will return a logical array with true in every location where the value x occurs in that matrix.
If you want to convert that info to subscript indices, then you can use find on that logical array:
[R,C] = find(idx)
In many cases using a logical index is simpler and more efficient, but it really depends entirely on what you are going to do with these indices, which so far you have not explained.

추가 답변 (2개)

David Hill
David Hill 2020년 10월 22일
[i,j]=ind2sub(size(Matrix_A),find(Matrix_A==x));
  댓글 수: 1
Walter Roberson
Walter Roberson 2020년 10월 22일
You might as well just use
[i, j] = find(Matrix_A == x)
There is a role for using ind2sub(), but really not until you are working in more than 2 dimensions.

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2020년 10월 22일
Like I replied to your other question that was essentially the same, use
ismember(x, Matrix_A)
If you are trying to find where in the matrix it occurs, then use the second output of ismember().
This assumes that there is only one match. If there might be multiple matches then you might as well use
[row, column] = find(Matrix_A == x)

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by