主要内容

使用基于仿真技术的频率响应估计

此示例显示了如何获得Simulink®模型的频率响应时,由于线性化路径中的基于事件的动力学,分析性阻止链接线性化无法提万博1manbetx供准确的答案。此类系统的示例是具有触发子系统或使用脉冲宽度调制(PWM)输入信号的模型。

打开模型

打开用于发动机计时万博1manbetx的Simulink模型。

mdl ='scdengine';Open_System(MDL)

由于线性化路径中的触发压缩子系统,该模型从节气门角度到发动机速度的分析模型线性化对发动机速度的线性化产生了零线性化。

io = getlinio(mdl);linsys =线性化(MDL,IO)
linsys = d = therottleangl grinespeed 0静态增益。

使用Sinestream输入信号估算频率响应

Sinestream输入信号是最可靠的输入信号,用于使用该模型估算Simulink模型的准确频率响应万博1manbetx疯狂功能。Sinestream信号由彼此附加的单个正弦信号组成。这疯狂函数模拟了Sinestream输入信号中每个频率的模型,如使用频率参数,对于相应的周期量,如使用numperiods范围。模拟后,疯狂使用输出信号在每个频率下计算响应。疯狂仅在系统达到该输入频率的稳定状态后仅使用该期间SettlingPeriods范围。

创建一个具有50个对数间距的不同频率在0.1到10 rad/s之间的sinestream信号。

in = frest.sinestream('频率',logspace(-1,1,50),'振幅',1E-3)
Sinestream输入信号:频率:[0.1 0.10985 0.12068 0.13257 ...](rad/s)幅度:0.001 SampleSperperiod:40 numperiods:4 ramperperiods:4 ramperperiods:0 frequnits:0 frequnits(rad/s,s,hz,hz):rad/s setterlingperiods:1 appllingperiods:1 appllinglingperiods:1 appllingperfilterfilterfilteringinfrestimate(ON/OFF):在仿真器上(顺序/oneatatime):顺序

默认情况下,在四个周期中模拟了Sinestream输入信号中的每个频率,也就是说numperiods4对于所有频率。同样,第一阶段的结束指定为系统达到稳态的位置,即SettlingPeriods1对于所有频率。所以,疯狂使用输出信号的最后三个时期。

使用此Sinestream输入信号,使用疯狂功能,并绘制所得频率响应数据。

[sys,simout] = frestimate(mdl,io,in);博德(SYS)

您可以使用仿真结果查看器检查估计结果。查看器显示了所选频率的时间域和频域模拟结果,以及可以在频率之间进行交互切换的摘要Bode图。

frest.simview(simout,in,sys);

您可以将观看器用作诊断影响频率响应估计准确性的问题,例如:

  • 没有达到稳定状态

  • 非线性激发

  • 陷入不稳定性

使用CHIRP输入信号估算频率响应

当从Simulink模型估算频率响应数据时,您可以使用的另一个输入信号是频率chirp。万博1manbetx频率chir与真主的不同之处在于,频率是瞬时变化的。

您可以使用CHIRP输入信号来获得更快的频率响应估计。但是,所得频率响应的可靠性不如使用Sinestream输入获得的频率响应不那么可靠,因为每个频率的模拟不足以使系统以该频率稳定状态。

创建一个CHIRP信号,该信号在0.1和10 rad/s对数之间扫描。

in_chirp = frest.Chirp('freqrange',[0.1 10],,'振幅',1E-3,...'扫,,,,“对数”,,,,'数字样本',3000);

使用CHIRP信号执行频率响应估计。

sys_chirp = frestimate(mdl,io,in_chirp);

绘制从Sinestream和Chirp输入信号一起获得的结果。

Bode(sys,sys_chirp,'r'

使用PRB输入信号估算频率响应

当估算Simulink模型估算频率响应数据时,您可以使用的另一个输入信号是二进制序列(PRB)。万博1manbetxPRB是一种周期性的,确定性的信号,具有白色噪声样性能,可在两个值之间移动。

您可以使用PRB输入信号来获得比CHIRP信号更高的频率分辨率的频率响应估计。

创建一个prbs信号的订单12和信号中的一个时期。使用单个时期会产生非周期性PRB。生成的PRB的长度为4095(2^12-1)。为了获得准确的频率响应估计,PRB的长度必须足够大。为确保系统适当兴奋,请指定PRB的扰动幅度为0.01

in_prbs = frest.prbs('命令',12,'numperiods',1,'振幅',1E-2,'ts',0.1,“ usewindow',,,,'离开');

使用PRBS信号执行频率响应估计。

sys_prbs = frestimate(mdl,io,in_prbs);

绘制使用PRB和Sinestream输入信号获得的结果。

Bode(sys_prbs,sys,'r',{0.1 10})

关闭模型。

bdclose('scdengine'

也可以看看

相关话题