Filter löschen
Filter löschen

Testing for a string in a cell array in a structure

8 Ansichten (letzte 30 Tage)
dormant
dormant am 18 Mär. 2022
Kommentiert: Voss am 22 Mär. 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.

Akzeptierte Antwort

Voss
Voss am 18 Mär. 2022
Bearbeitet: Voss am 18 Mär. 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 Kommentare
dormant
dormant am 22 Mär. 2022
Many thanks. Cell arrays are my Kryptonite!
Voss
Voss am 22 Mär. 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).

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by