在命令行中估计频率响应
此示例说明如何在 MATLAB® 命令行中估计 Simulink® 模型的频率响应。
打开 Simulink 模型。
mdl = 'scdplane';
open_system(mdl)
有关频率响应估计的一般模型要求的详细信息,请参阅Model Requirements。
使用分析点指定频率响应估计的输入和输出点。避免在总线信号上放置分析点。
io(1) = linio('scdplane/Sum1',1); io(2) = linio('scdplane/Gain5',1,'output');
有关线性分析点的详细信息,请参阅指定要线性化的模型部分和 linio
。
将模型线性化,并根据生成的线性系统的动态特性创建正弦流信号。有关详细信息,请参阅Estimation Input Signals和 frest.Sinestream
。
sys = linearize('scdplane',io);
input = frest.Sinestream(sys);
如果您的模型尚未达到稳态,请在估计频率响应之前,使用稳态工作点初始化模型。您可以通过仿真模型来检查模型是否处于稳态。有关查找稳态工作点的详细信息,请参阅Compute Steady-State Operating Points。
找出生成时变信号的线性化输出的信号路径中的所有源模块。这种时变信号会干扰在线性化输出点处的信号,并产生不准确的估计结果。
srcblks = frest.findSources('scdplane',io);
要禁用时变源模块,请创建 frestimateOptions
选项集并指定 BlocksToHoldConstant
选项。
opts = frestimateOptions; opts.BlocksToHoldConstant = srcblks;
估计频率响应。
[sysest,simout] = frestimate('scdplane',io,input,opts);
sysest
是估计的频率响应。simout
是表示仿真输出的 Simulink.Timeseries
对象。
要加快估计或降低内存要求,请参阅Managing Estimation Speed and Memory。
打开仿真结果查看器以分析估计的频率响应。
frest.simView(simout,input,sysest)
您也可以将估计的频率响应 sysest
与系统的精确线性化 sys
进行比较。
frest.simView(simout,input,sysest,sys)
波特图将响应 sys
显示为一条蓝线。
另请参阅
linio
| operspec
| findop
| frest.findSources
| frestimateOptions
| frestimate