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

2 views (last 30 days)
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.

Accepted Answer

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

More Answers (1)

Paul Fishback
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'}))

Categories

Find more on Data Import and Analysis in Help Center and File Exchange

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!