Intersection of two matrices based on 1st column

2 views (last 30 days)
I have two matrices of with different number of columns but same number of rows (large data sets). Here is an exapmle.
A = [1 2 3; 4 5 6; 6 8 9];
B = [1 2 3 5; 4 6 7 8 ; 9 10 11 12];
I am looking to compare A and B on the basis of values in 1st column only and get an out put of the rows which are not common based on this criteria. Hence,
C = [ 9 10 11 12];
I have tried intersect with rows option but it needs same number of columns and secondly i dont have same values throught two rows (but only in the1st column) to work it properly.
  1 Comment
Yasir Zahoor
Yasir Zahoor on 11 Feb 2019
Just to add, I would like to keep the order of the resultant rows intact.

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 11 Feb 2019
[~, rowstokeep] = setdiff(B(:, 1), A(:, 1)); %get index of rows in B whose 1st column is not in 1st column of A
C = B(rowstokeep, :)
  2 Comments
Guillaume
Guillaume on 11 Feb 2019
Just to add, I would like to keep the order of the resultant rows intact.
Use the 'stable' option of setdiff, then.

Sign in to comment.

More Answers (0)

Categories

Find more on Data Types in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!