Error Appears while Using Simulink® Design Optimization™ to Estimate Model Parameters for RC Circuit Model

5 次查看(过去 30 天)
Good day ladies and gentlemen. I am new to the Simulink® Design Optimization™. Just now I tried to practice with the example found in the following link: http://uk.mathworks.com/help/sldo/examples/estimate-model-parameters-and-initial-states-code.html
I keyed in all the commands in the example step by step. Below is the commands that I have entered: open_system('sdoRCCircuit');
% Get the measured data. load sdoRCCircuit_ExperimentData
% Create an experiment object to store the experimental voltage data. Exp = sdo.Experiment('sdoRCCircuit');
% Create an object to store the measured capacitor voltage output. Voltage = Simulink.SimulationData.Signal; Voltage.Name = 'Voltage'; Voltage.BlockPath = 'sdoRCCircuit/PS-Simulink Converter'; Voltage.PortType = 'outport'; Voltage.PortIndex = 1; Voltage.Values = timeseries(data,time);
% Add the measured capacitor data to the experiment as the expected output data. Exp.OutputData = Voltage;
% Create a simulation scenario using the experiment and obtain the simulated output. Simulator = createSimulator(Exp); Simulator = sim(Simulator);
% Search for the voltage signal in the logged simulation data. SimLog = find(Simulator.LoggedData,get_param('sdoRCCircuit','SignalLoggingName')); Voltage = find(SimLog,'Voltage');
% Plot the measured and simulated data. The model response does not match the experimental output data. plot(time,data,'ro',Voltage.Values.Time,Voltage.Values.Data,'b') title('Simulated and Measured Responses Before Estimation') legend('Measured Voltage','Simulated Voltage')
% Select the capacitance parameter from the model. Specify an initial guess for the capacitance value (460 uF) and a minimum bound (0 F). p = sdo.getParameterFromModel('sdoRCCircuit','C1'); p.Value = 460e-6; p.Minimum = 0;
% Create an estimation objective function to evaluate how closely the simulation output, generated using the estimated parameter value, matches the measured data. % Use an anonymous function with one input argument that calls the sdoRCCircuit_Objective function. We pass the anonymous function to sdo.optimize, which evaluates the function at each optimization iteration. estFcn = @(v) sdoRCCircuit_Objective(v,Simulator,Exp);
% To examine the estimation object function in more detail, type edit sdoRCCircuit_Objective at the MATLAB command prompt. type sdoRCCircuit_Objective
% Use the sdo.optimize function to estimate the capacitance value. % Specify the optimization options. The estimation function sdoRCCircuit_Objective returns the error residuals between simulated and experimental data and does not include any constraints, making this problem ideal for the 'lsqnonlin' solver. opt = sdo.OptimizeOptions; opt.Method = 'lsqnonlin';
% Estimate the parameters. pOpt = sdo.optimize(estFcn,p,opt)
However, I am stuck with the last command. The following error message occur when I tried to run the command: Error using sdo.optimize (line 116) The function handle passed to the optimize command encountered an error when evaluated with a parameter vector.
Caused by: Error using sdoRCCircuit_Objective Too many input arguments.
Can anyone here help me how to fix this problem? Thank you very much.
  2 个评论
Swarooph
Swarooph 2016-7-12
A couple of fundamental questions:
1. What version of MATLAB are you using?
2. Do you have Simulink Design Optimization installed?
You can copy the output of the ver command here to answer all these questions.
P.S: Note that this will also give the license number. You can delete that out of your reply if you want.
SHAMSUL FAISAL
SHAMSUL FAISAL 2016-7-13
Dear Swarooph,
Thank you very much for your reply. I was about to prepare the content of the Ver of my Matlab, but I decided to try one more time. While trying, I found a ready-written m-file for the same example in the installation file. Instead of copying the instructions one by one from users manual and website (like what I did before), this time I ran the m-file straight away. This time it works. I will double-check which part that I did mistake while copying the instructions one by one from users manual and website.
Thank you very much and thank you for your attention and have a nice day :-)

请先登录,再进行评论。

回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by