Index multiple elements in a vector using logical indexing
9 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Rob
il 28 Mar 2011
Risposto: Vasileios Siomos
il 25 Mar 2017
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 Commenti
Matt Tearle
il 28 Mar 2011
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...)
Risposta accettata
Sean de Wolski
il 28 Mar 2011
Oleg's way is probably faster, but also:
D = C(any(bsxfun(@eq,A.',B),2))
Più risposte (2)
Oleg Komarov
il 28 Mar 2011
For comparison with multiple elements:
D = C(ismember(A,B))
Also, avoid to use find when you don't need the coordinates.
0 Commenti
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!