Intersection of two matrices based on 1st column

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

Just to add, I would like to keep the order of the resultant rows intact.

Sign in to comment.

 Accepted Answer

[~, 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

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 Get Started with MATLAB 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!