【matlab】Simulink 微分模块的线性化问题

1 什么问题

之前在一个simulink模型进行模型的线性化Model Linearizer分析时,发现得到传递函数结果和预期总是有差别,排查一番,发现是微分模块“惹的祸”。
【matlab】Simulink 微分模块的线性化问题_第1张图片

2 问题复现

搭建如下的simulink模式。
【matlab】Simulink 微分模块的线性化问题_第2张图片
其中,微分模块来自于continuous中的Derivative
【matlab】Simulink 微分模块的线性化问题_第3张图片
很显然,系统的传递函数为:
G ( s ) = 1 10 s + 1 ∗ s = s 10 s + 1 G(s)=\frac{1}{10s+1}*s=\frac{s}{10s+1} G(s)=10s+11s=10s+1s
但是使用Model Linearizer进行线性化,具体操作步骤如下。
【matlab】Simulink 微分模块的线性化问题_第4张图片
线性化结束后,会自动弹出一个result对话框,在下拉框中选择Transfer Function

【matlab】Simulink 微分模块的线性化问题_第5张图片
得到结果如下图,系统有1个输入、1个输出没有问题,但是显示0个states,这个就对了,同时u1-->y1为0,也就是:
y 1 = u 1 ∗ 0 = 0 y1=u1*0=0 y1=u10=0
【matlab】Simulink 微分模块的线性化问题_第6张图片
显然,这不是我们想要的结果。

3 问题分析

双击微分模块,可以看到在参数选项中,提示有一个参数c,使用s/(c*s+1)模块(可以理解为一个微分计算+低通滤波)替换理想的微分计算,用以降低微分带来的噪声。
这个参数默认为inf,也是默认为理想的微分。
【matlab】Simulink 微分模块的线性化问题_第7张图片
打开模块的“Help”,翻到最底部,有一个“Topics"提到了“Linearization”。
【matlab】Simulink 微分模块的线性化问题_第8张图片
打开链接,“谜底”接揭开了。
【matlab】Simulink 微分模块的线性化问题_第9张图片
大意如下:
【matlab】Simulink 微分模块的线性化问题_第10张图片
所以,在没有指定明确的参数c时,这个模块就作为增益为0模块,与上述我们的验证结果相同。

4 问题验证

把参数c设定为)0.05,再次进行线性化,得到结果如下。
【matlab】Simulink 微分模块的线性化问题_第11张图片
G ( s ) = 1 10 s + 1 ∗ s 0.05 s + 1 = 2 s ( 10 s + 1 ) ( 0.1 s + 2 ) = 2 s s 2 + 20.1 s + 2 G(s)=\frac{1}{10s+1}*\frac{s}{0.05s+1}=\frac{2s}{({10s+1})(0.1s+2)}=\frac{2s}{s^2+20.1s+2} G(s)=10s+110.05s+1s=(10s+1)(0.1s+2)2s=s2+20.1s+22s
所以在进行Model Linearizer时,一定要检测Derivative的参数。

你可能感兴趣的:(MATLAB,matlab,传递函数,线性化)