Estimate Frequency Response at the Command Line
This example shows how to estimate the frequency response of a Simulink® model at the MATLAB® command line.
Open the Simulink model.
mdl = 'scdplane'; open_system(mdl)
For more information on the general model requirements for frequency response estimation, see docid:slcontrol_ug.br9u7cb.
Specify input and output points for frequency response estimation using analysis points. Avoid placing analysis points on bus signals.
io(1) = linio('scdplane/Sum1',1); io(2) = linio('scdplane/Gain5',1,'output');
sys = linearize('scdplane',io); input = frest.Sinestream(sys);
If your model has not reached steady state, initialize the model using a steady-state operating point before estimating the frequency response. You can check whether your model is at steady state by simulating the model. For more information on finding steady-state operating points, see docid:slcontrol_ug.bsns8b2-1.
Find all source blocks in the signal paths of the linearization outputs that generate time-varying signals. Such time-varying signals can interfere with the signal at the linearization output points and produce inaccurate estimation results.
srcblks = frest.findSources('scdplane',io);
To disable the time-varying source blocks, create an frestimateOptions option set and specify the BlocksToHoldConstant option.
opts = frestimateOptions; opts.BlocksToHoldConstant = srcblks;
Estimate the frequency response.
[sysest,simout] = frestimate('scdplane',io,input,opts);
sysest is the estimated frequency response. simout is a Simulink.Timeseries object representing the simulated output.
To speed up your estimation or decrease its memory requirements, see docid:slcontrol_ug.bscm3us.
Open the Simulation Results Viewer to analyze the estimated frequency response.
You can also compare the estimated frequency response, sysest, to an exact linearization of your system, sys.
The Bode Diagram plot shows the response sys as a blue line.