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 comentario

Azzi Abdelmalek
Azzi Abdelmalek el 19 de Feb. de 2014
[Kris zenitis commented]
Yeah thank you man!!

Iniciar sesión para comentar.

 Respuesta aceptada

Jan
Jan el 14 de Mayo de 2011

7 votos

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').

3 comentarios

Andrei Bobrov
Andrei Bobrov el 14 de Mayo de 2011
Hi Jan! may be it?
I = sum((A(:, 1) == x).* (A(:, 2) ==y));
Jan
Jan el 14 de Mayo de 2011
@Andrei: You are right. But the multiplication is slower than the AND operator. Therefore I've removed this method.
Esubalew
Esubalew el 25 de Jul. de 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!

Iniciar sesión para comentar.

Más respuestas (1)

Matt Fig
Matt Fig el 14 de Mayo de 2011

1 voto

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)

Categorías

Más información sobre Matrices and Arrays en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 14 de Mayo de 2011

Comentada:

el 25 de Jul. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by