Main Content

在命令行中估计频率响应

此示例说明如何在 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 Signalsfrest.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 显示为一条蓝线。

另请参阅

| | | | |

相关主题