Filter löschen
Filter löschen

Logical indexing in cell array

120 Ansichten (letzte 30 Tage)
matuser123
matuser123 am 14 Okt. 2016
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'.

Akzeptierte Antwort

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

Weitere Antworten (3)

Ganesh Hegade
Ganesh Hegade am 14 Okt. 2016
Hi, You can use this
strcmp(b, '3');

michio
michio am 14 Okt. 2016
Using cellfun is one way.
b = {'1' '2' '3' '4' '5' '6'};
cellfun(@(x) strcmp(x,'3'), b)
  1 Kommentar
michio
michio am 14 Okt. 2016
Aha, strcmp does accept cell array. Thank Ganesh.

Melden Sie sich an, um zu kommentieren.


Sulaymon Eshkabilov
Sulaymon Eshkabilov am 4 Jul. 2021
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.

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by