How to select rows in a matrix based on the values in another matrix?

11 views (last 30 days)
Hi,
I have a matrix A and a matrix B:
-------- A ------- ---------- B ---------
201918 4.5 201908 7 2.1
201917 4.1 201918 8 0.3
201821 -7.1 201917 9 0.1
201718 0.2 201916 9 2
201903 6 18.1
201718 0 1.9
I need to intersect their first columns in order to find matching values within B, thus obtaining a matrix C:
---------- C --------
201918 8 0.3
201917 9 0.1
201718 0 1.9
By using the function intersect(A(:,1), B(:,1)) I get the first column of C but how do I get the corresponding values of the other rows in B?

Accepted Answer

David Hill
David Hill on 27 Apr 2022
C=B(ismember(B(:,1),A(:,1)),:);

More Answers (1)

Jonas
Jonas on 27 Apr 2022
use
[~,ia,ib])=intersect(A(:,1), B(:,1));
A(ia,:)
B(ib,:)

Community Treasure Hunt

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

Start Hunting!