Testing for a string in a cell array in a structure

5 visualizaciones (últimos 30 días)
dormant
dormant el 18 de Mzo. de 2022
Comentada: Voss el 22 de Mzo. de 2022
I want to find the matches to a string in a cell array of strings which is part of a structure.
Strcmp works when I give it the cell array, but not when I use the structure.
>> CellArray = { 'one' 'two' 'three' 'one' };
>> S = struct( 'CA', CellArray );
>> strcmp( CellArray, 'one' )
ans =
1×4 logical array
1 0 0 1
>> strcmp( S.CA, 'one' )
Error using strcmp
Too many input arguments.
>>
What am I doing wrong?
I don't have to use a structure - I just use it as a way of returing lots of variables from a function.

Respuesta aceptada

Voss
Voss el 18 de Mzo. de 2022
Editada: Voss el 18 de Mzo. de 2022
Enclose cell array arguments in the call to struct() with {} to make them scalar cell arrays, because struct() will create an array of structs for cell array inputs, one per element of the cell array given.
CellArray = { 'one' 'two' 'three' 'one' };
S = struct( 'CA', CellArray ) % 1-by-4 struct array
S = 1×4 struct array with fields:
CA
S = struct( 'CA', {CellArray} ) % scalar struct
S = struct with fields:
CA: {'one' 'two' 'three' 'one'}
strcmp( CellArray, 'one' )
ans = 1×4 logical array
1 0 0 1
strcmp( S.CA, 'one' )
ans = 1×4 logical array
1 0 0 1
  2 comentarios
dormant
dormant el 22 de Mzo. de 2022
Many thanks. Cell arrays are my Kryptonite!
Voss
Voss el 22 de Mzo. de 2022
You're welcome! If it's working now, do you mind marking the answer as 'Accepted'? I appreciate it!
Honestly, the behavior of struct() you ran into here - where passing a cell array to the struct() function creates an array of structs rather than a scalar struct with a cell array field - is one thing that bugs me about MATLAB (and there aren't very many things that bug me about MATLAB).

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Structures en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by