using a value to find index in a matrix?
3 次查看(过去 30 天)
显示 更早的评论
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)
0 个评论
采纳的回答
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.
0 个评论
更多回答(2 个)
David Hill
2020-10-22
[i,j]=ind2sub(size(Matrix_A),find(Matrix_A==x));
1 个评论
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
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)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!