Logical indexing in cell array

147 visualizaciones (últimos 30 días)
matuser123
matuser123 el 14 de Oct. de 2016
Respondida: Sulaymon Eshkabilov el 4 de Jul. de 2021
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'.

Respuesta aceptada

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

Más respuestas (3)

Ganesh Hegade
Ganesh Hegade el 14 de Oct. de 2016
Hi, You can use this
strcmp(b, '3');

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

Iniciar sesión para comentar.


Sulaymon Eshkabilov
Sulaymon Eshkabilov el 4 de Jul. de 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.

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by