Index multiple elements in a vector using logical indexing

Hi, I want to use logical indexing to "grap" some elements from a vector. Normally if you're only looking for a single element, you could use the "find" function, for example:
A = [1 2 3 4 5 6];
B = 2;
C = [5 6 7 8 9 0]
D = C(find(A==B));
or use something like: D = C(A==B);
But now I am interested in finding multiple elements in A. So B becomes a vector in this case. For example:
A = [1 2 3 4 5 6];
B = [2 4];
C = [5 6 7 8 9 0]
I thought I could do something simular as in the upper case, by writing something like:
D = C(A==B). But apparently this does noet work.
Can anyone help me? Thanks a lot in advance!

2 件のコメント

Sean de Wolski
Sean de Wolski 2011 年 3 月 28 日
Very well written question, you get a vote!
Matt Tearle
Matt Tearle 2011 年 3 月 28 日
Indeed! Good question, and good answers. A good community exchange all round!
(It was a Q&A of two halves, the comment with the most votes won, but MATLAB Answers was the real winner on the day. Ahhh, my cliche-o-matic is stuck...)

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

 採用された回答

Sean de Wolski
Sean de Wolski 2011 年 3 月 28 日

0 投票

Oleg's way is probably faster, but also:
D = C(any(bsxfun(@eq,A.',B),2))

1 件のコメント

Rob
Rob 2011 年 3 月 28 日
Thanks a lot to both of you.
I was not aware of the "ismember" function, but this works indeed.
Thanks!

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

その他の回答 (2 件)

Oleg Komarov
Oleg Komarov 2011 年 3 月 28 日

4 投票

For comparison with multiple elements:
D = C(ismember(A,B))
Also, avoid to use find when you don't need the coordinates.
Vasileios Siomos
Vasileios Siomos 2017 年 3 月 25 日

0 投票

This is an awesome trick thanks a bunch guys

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

質問済み:

Rob
2011 年 3 月 28 日

回答済み:

2017 年 3 月 25 日

Community Treasure Hunt

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

Start Hunting!

Translated by