Testing for a string in a cell array in a structure
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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.
0 Kommentare
Akzeptierte Antwort
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 = struct( 'CA', {CellArray} ) % scalar struct
strcmp( CellArray, 'one' )
strcmp( S.CA, 'one' )
2 Kommentare
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).
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!