Looking for an efficient way of finding elements in a cell array of character vectors

5 vues (au cours des 30 derniers jours)
I have a cell array of character vectors, named "Channels", in which each entry corresponds a particular EEG channel label. I'd like to find indices that correspond to all P channels. For a single channel, P3, I have no problem. For example,
index = find(strcmp(Channels, 'P3'))
returns the correct index.
To find those indices that correspond to all four P labels, P3, P4, P7, P8, I can "glue" things together, such as
index = find(strcmp(Channels, 'P3')|strcmp(Channels,'P4')|strcmp(Channels,'P7')|strcmp(Channels,'P8'))
Of course, there has to be a more efficient way. I can't seem to find the correct manner to combine 'P3', 'P4', 'P7','P8' so so as to do it one step.

Réponse acceptée

Stephen23
Stephen23 le 21 Fév 2019
Modifié(e) : Stephen23 le 21 Fév 2019
ismember(Channels,{'P3','P4','P7','P8'})

Plus de réponses (1)

Paul Fishback
Paul Fishback le 21 Fév 2019
Modifié(e) : Paul Fishback le 21 Fév 2019
Thanks very much. The ismember will return a logical array. If I tack on the find command, I get the desired indices as well:
find(ismember(Channels,{'P3','P4','P7','P8'}))

Catégories

En savoir plus sur Operators and Elementary Operations dans Help Center et File Exchange

Produits


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by