在命令行中估计频率响应
此示例说明如何在 MATLAB® 命令行中估计 Simulink® 模型的频率响应。
打开 Simulink 模型。
mdl = 'scdplane';
open_system(mdl)

有关频率响应估计的一般模型要求的详细信息,请参阅模型要求。
使用分析点指定频率响应估计的输入和输出点。避免在总线信号上放置分析点。
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