How to automatically create struct-fields from a cell array

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개)

카테고리

도움말 센터File Exchange에서 Cell Arrays에 대해 자세히 알아보기

제품

태그

질문:

2018년 2월 14일

편집:

2018년 2월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by