How to automatically create struct-fields from a cell array

6 次查看(过去 30 天)
Hello folks,
it's late and I'm not able to figure out how this works. I use an optimizer which passes some parameter values to my mathematical model. However, the model reads all parameters out of struct-fields and I have to transform the double vector before the model can actually the values. Currently, I do this transformation manually:
function [p] = MakeStruct(parameter)
p.parameter1 = parameter(1);
.
.
p.parameter34 = parameter(34);
end
which of course is suboptimal because when I change a parameter or its name I have to go through the code and change it in several places. Does anybody know, how I can make this automatically?
When I create the parameters, my script also returns a 1x34 cell array with all parameter names. So far, I tried to combine both the cell array with all names and the double array with all values with "cell2struct" but it didn't worked for me.
Cheers

采纳的回答

Moritz Pohl
Moritz Pohl 2018-2-17
编辑:Moritz Pohl 2018-2-17
Figured it out on my own. For anyone who's interested:
% conversion of to double arrays to a 1x1 struct with fieldnames from 'parameter_names' and fieldvalues from 'parameter_values'
parameter_values = [2 3]; % double array
parameter_cell = num2cell(parameter); % conversion of double array to cell array
parameter_names = {'qmax', 'kS'}; % cell array
p = cell2struct(parameter_cell, parameter_names , 2); % conversion of both cell arrays to 1x1 struct

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by