Is there a way to search strings in a cell array similar to numeric arrays?
a = [1 2 3 4 5 6];
>> idx = find(a==3)
idx = 3
>> b = {'1' '2' '3' '4' '5' '6'};
>> idx = find(b=='3')
Undefined function 'eq' for input arguments of type 'cell'.

 Réponse acceptée

Image Analyst
Image Analyst le 14 Oct 2016

5 votes

Use ismember to search cell arrays:
b = {'1' '2' '3' '4' '5' '6'};
logicalIndex = ismember(b, '3') % Or...
actualIndex = find(ismember(b, '3'))

Plus de réponses (3)

Ganesh Hegade
Ganesh Hegade le 14 Oct 2016

4 votes

Hi, You can use this
strcmp(b, '3');
michio
michio le 14 Oct 2016

1 vote

Using cellfun is one way.
b = {'1' '2' '3' '4' '5' '6'};
cellfun(@(x) strcmp(x,'3'), b)

1 commentaire

michio
michio le 14 Oct 2016
Aha, strcmp does accept cell array. Thank Ganesh.

Connectez-vous pour commenter.

Sulaymon Eshkabilov
Sulaymon Eshkabilov le 4 Juil 2021

0 votes

Now, what michio suggested works perfectly ok:
b = {'1' '2' '3' '4' '5' '6'};
b(cellfun(@(x) strcmp(x,'3'), b))={'Found 3'}
So this is another good solution for this exercise.

Catégories

En savoir plus sur Operators and Elementary Operations dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by