Find index to rows of one matrix in another

4 views (last 30 days)
Suppose I have two matrices:
>> A = eye(3)
A =
1 0 0
0 1 0
0 0 1
>> idx = [1 3 2 2];
>> B = A(idx, :)
B =
1 0 0
0 0 1
0 1 0
0 1 0
But I don't know idx. How would I find the vector idx such that isequal(B, A(idx, :))?
I found answers for calculating the index of one row at a time:
>> find(ismember(A, B(2,:), 'rows'))
ans =
3

Accepted Answer

Bill Tubbs
Bill Tubbs on 31 Aug 2022
Edited: Bill Tubbs on 31 Aug 2022
I figured out the answer:
>> [~, idx] = ismember(B, A, 'rows')
idx =
1
3
2
2
In case you want to check that all rows in B where found in A you can do this:
[matches, idx] = ismember(B, A, 'rows')
assert(all(matches))

More Answers (0)

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!