Find index to rows of one matrix in another

조회 수: 1 (최근 30일)
Bill Tubbs
Bill Tubbs 2022년 8월 31일
편집: Bill Tubbs 2022년 8월 31일
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

채택된 답변

Bill Tubbs
Bill Tubbs 2022년 8월 31일
편집: Bill Tubbs 2022년 8월 31일
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))

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by