MATLAB: Intersect function returns only one index why

intersectmatrix

Hi,
I have:
A = [1 2 3 4;
1 2 3 4;
5 6 1 2]
B = [1 2]
[~, index] = intersect(A(:,1:2),B(1,:),'rows')
The result I get is:
index = 2
Why is that while I actually have 2 rows in A equal to B
Why I don't get index = 1 and 2

Best Answer

C = intersect(A,B) returns the data common to both A and B with no repetitions.
Notice the "no repetitions". The two entries in A become the same after extracting the first two columns, so outputting the entry twice would be a repetition.
If A and B are numeric arrays, logical arrays, character arrays, categorical arrays, or cell arrays of strings, then C = A(ia) and C = B(ib).
Notice there that since C is the same size either way, it follows that ia and ib must be the same length. As only one intersection is being returned for C (because the other is a repetition) it follows that only one index is being returned in ia and ib.
You should be considering ismember()