Vectorized Search of substrings in Cell Array
Afficher commentaires plus anciens
I have a cell array of strings and I want to match substrings to produce a boolean vector to then extract the elements of interest.
I want strfind to behave like strcmp.
t = {'abcde','bcde','abc','ac'};
i = strcmp(t,'bcde')
0 1 0 0
for example - for 'bc', I want:
1 1 1 0
but using strfind, I get :
i = strfind(t,'bc')
[2] [1] [2] []
then:
~isempty(i)
1
or:
i==[]
but this returns: 'Undefined function 'eq' for input arguments of type 'cell'.'
I think cellfun() with strfind() and isempty() might work but I'm confused how to use it.
v= cellfun(@(x) strfind(t,'bc'), t, 'UniformOutput', false)
v =
{1x4 cell} {1x4 cell} {1x4 cell} {1x4 cell}
v{1}
ans =
[2] [1] [2] []
I want boolean array: [1 1 1 0]
Réponse acceptée
Plus de réponses (2)
the cyclist
le 18 Fév 2019
Here is one way:
cellfun(@(x)not(isempty(x)),strfind(t,'bc'))
the cyclist
le 19 Fév 2019
Discovered a much cleaner way:
contains(t,'bc');
1 commentaire
Stephen23
le 20 Fév 2019
Note: requires R2016b or later.
Catégories
En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!