Cell Array to Structures

Is there a way to take a 1xM cell array and transform that into a structure array without using the function struct()?
The cell array will always be formatted this way: CellArr = {<field1 name>, {cell array of field 1 contents}, <field2 name, {cell array of field 2 contents}, etc...}

 Accepted Answer

Walter Roberson
Walter Roberson on 18 Oct 2015
Note: this will use struct() internally.

2 Comments

Is there a way to do this without using cell2struct? I managed to separate my field names and contents, so how can I do this with loops?
You could use dynamic field assignment.
YourStruct = [];
for K = 1 : 2: length(CellArr)
YourStruct.(CellArr{K}) = CellArr{K+1};
end
It would be stylistically better to initialize
YourStruct = struct();
but you said you wanted to not use struct().
By the way, are you aware that you can do the whole thing by using
YourStruct = struct(CellArr{:});
? Though you would have to watch out for cases where the contents included cell arrays as struct() would tend to create a structure array for those cases instead of a single struct.

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!