MATLAB Answers


FInd vector in matrix

Asked by Kris zenitis on 14 May 2011
Latest activity Commented on by Esubalew on 25 Jul 2017
Accepted Answer by Jan
Lets assume that I have a matrix A 300x2 with x y coordinates. I want to find how many times a specific [x y] exists in this matrix A. I ve tried this but find can search only single values.
i = find(A == [x y]);
Any idea?????

  1 Comment

Azzi Abdelmalek
on 19 Feb 2014
[Kris zenitis commented]
Yeah thank you man!!

Sign in to comment.

2 Answers

Answer by Jan
on 14 May 2011
 Accepted Answer

Another method:
I = sum(A(:, 1) == x & A(:, 2) == y);
EDITED: Buggy multiplication method removed. Thanks Andrei!
This method is about 50 times faster than ISMEMBER(A, b, 'rows').


Andrei Bobrov
on 14 May 2011
Hi Jan! may be it?
I = sum((A(:, 1) == x).* (A(:, 2) ==y));
on 14 May 2011
@Andrei: You are right. But the multiplication is slower than the AND operator. Therefore I've removed this method.
Esubalew on 25 Jul 2017
Hi Jan,
The method you suggested above is a good one, but incase if A is 1000 by 100 matrix or a bigger matrix, it there a better way to cind the row of A, A_i such that A_i ==v for some vector v of size =size(A,2)?
Thank you!

Sign in to comment.

Matt Fig
Answer by Matt Fig
on 14 May 2011

For example:
A = reshape(1:12,6,2) % A sample matrix for demonstration...
I = ismember(A,[4 10],'rows');
If you want to find how many there are, use:
S = sum(I)


Sign in to comment.