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 件のコメント

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 2 月 19 日
[Kris zenitis commented]
Yeah thank you man!!

サインインしてコメントする。

 採用された回答

Jan
Jan 2011 年 5 月 14 日

7 投票

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 件のコメント

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

サインインしてコメントする。

その他の回答 (1 件)

Matt Fig
Matt Fig 2011 年 5 月 14 日

1 投票

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)

カテゴリ

ヘルプ センター および File ExchangeMatrices and Arrays についてさらに検索

質問済み:

2011 年 5 月 14 日

コメント済み:

2017 年 7 月 25 日

Community Treasure Hunt

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

Start Hunting!

Translated by