How to convert 182*1 struct with 20 fields to 1*1 struct with 20 fields?
Info
This question is closed. Reopen it to edit or answer.
Show older comments
I have 20*182 cell which I need to convert to struct. By using cell2struct command I am getting 182*1 struct but I want 1*1 struct.
Source data file

5 Comments
per isakson
on 11 Dec 2018
Edited: per isakson
on 11 Dec 2018
Remember that for-loops are allowed in Matlab and that they are fast enough.
If this is an cell2struct exercise, please provide an 5x3 example with input and output.
per isakson
on 11 Dec 2018
I prefer some data that I can copy&paste.
Parthiban C
on 11 Dec 2018
per isakson
on 11 Dec 2018
Edited: per isakson
on 11 Dec 2018
Are 'ParamXX' or 'NameYY' supposed to be used as field names ?
Parthiban C
on 11 Dec 2018
Answers (1)
Guillaume
on 11 Dec 2018
"This one is very close to what I need. In final answer I need 182*1 double instead of 1*182 double"
Well that's trivially fixed with your existing code by transposing your vector, so by replacing:
S.(data{jj}) = [data{jj,2:end}];
by
S.(data{jj}) = [data{jj,2:end}]';
Or you could do this:
%demo data: %Not sure why we bother about the first row since it's unused
data = [{'Description'}, compose('Name%02d', 1:182);
compose('Parm%02d', (1:20)'), num2cell(rand(20, 182))]
%conversion to structure
newdata = num2cell(cell2mat(data(2:end, 2:end))', 1);
S = cell2struct(newdata, data(2:end, 1), 2)
This question is closed.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!