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

15 views (last 30 days)
Paul Fishback on 21 Feb 2019
Edited: Paul Fishback on 21 Feb 2019
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.

Stephen Cobeldick on 21 Feb 2019
Edited: Stephen Cobeldick on 21 Feb 2019
ismember(Channels,{'P3','P4','P7','P8'})

Paul Fishback on 21 Feb 2019
Edited: Paul Fishback on 21 Feb 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'}))

R2018b

### Community Treasure Hunt

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

Start Hunting!