how to index a matrix by using a index matrix that has same size?
1 view (last 30 days)
Show older comments
I have a m by n data matrix and a m by n index matrix which rearranges the order of the n elements in each row of the data matrix. How can I get an indexed data matrix without using loop? Thanks.
1 Comment
Accepted Answer
Walter Roberson
on 30 Mar 2013
Edited: Walter Roberson
on 30 Mar 2013
Use sub2ind()
3 Comments
Walter Roberson
on 30 Mar 2013
Oops, yes, I was concentrating on not putting an "s" in and so left out the "2" :(
Cedric
on 30 Mar 2013
I thought that you had forgotten the "s" and I ended up realizing that it was a "2" ;-)
More Answers (2)
Anand
on 30 Mar 2013
If A is your original matrix and idx is the matrix of indices, you can use logical indexing: A(idx).
Here's an example:
>> A = rand(3)
A =
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
>> idx = [9 8 7;6 5 4;3 2 1]
idx =
9 8 7
6 5 4
3 2 1
>> A(idx)
ans =
0.9575 0.5469 0.2785
0.0975 0.6324 0.9134
0.1270 0.9058 0.8147
1 Comment
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!