通过函数绘制一阶二阶传递函数伯德图
- 格式:doc
- 大小:141.11 KB
- 文档页数:4
Matlab中Bode图的绘制技巧2010-06-04 21:21:48 阅读54 评论0 字号:大中小订阅我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。
譬如我们要画出下面这个传递函数的伯德图:s^2H(s)=------------------------------------------------------------------------------------------s^4 + s^3 + s^2 + s +(这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。
) 我们可以用下面的语句:num=[ 0 0];den=[1 ];H=tf(num,den);bode(H)这样,我们就可以得到以下的伯德图:可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。
下面,我们来看看如何定制我们自己的伯德图风格:在命令窗口中输入:bodeoptions我们可以看到以下内容:ans =Title: [1x1 struct]XLabel: [1x1 struct]YLabel: [1x1 struct]TickLabel: [1x1 struct]Grid: 'off'XLim: {[1 10]}XLimMode: {'auto'}YLim: {[1 10]}YLimMode: {'auto'}IOGrouping: 'none'InputLabels: [1x1 struct]OutputLabels: [1x1 struct]InputVisible: {'on'}OutputVisible: {'on'}FreqUnits: 'rad/sec'FreqScale: 'log'MagUnits: 'dB'MagScale: 'linear'MagVisible: 'on'MagLowerLimMode: 'auto'MagLowerLim: 0PhaseUnits: 'deg'PhaseVisible: 'on'PhaseWrapping: 'off'PhaseMatching: 'off'PhaseMatchingFreq: 0PhaseMatchingValue: 0我们可以通过修改上面的每一项修改伯德图的风格,比如我们使用下面的语句画我们的伯德图:P=bodeoptions;='on';={[10 40000]};={'manual'};='HZ';num=[ 0 0];den=[1 ];H=tf(num,den);bode(H,P)这时,我们将会看到以下的伯德图:上面这张图相对就比较好了,它的横坐标单位是HZ,范围是[10 40K]HZ,而且打开了网格,便于我们观察-3DB处的频率值。
关于一阶二阶传递函数的伯德图
一阶惯性系统的通式为:
将式子两边同时除以a0得
令0
0a K b =为系统静态灵敏度; 0
1a a =τ为系统时间常数; 则有
)()()1(
s KX s Y s =+τ
故有 )
1()()()(+==s K s X s Y s H τ 以液柱式温度计为例,传递函数为 )1(1)()()(+==s s X s Y s H τ
可得频率响应函数
)1j (1)(+=
τωs H )()()(001t x b t y a dt
t dy a =+)()()(0001t x a b t y dt t dy a a =+
可得传递函数的幅频与相频特性 2)1(1
)()(τωωω+==j H A
ωτωωϕarctan )()(-=∠=j H 在MATLAB 上输入程序(此时令1=τ)
num=[1];
den=[1,1];
figure
sys=tf(num,den);
bode(sys);grid on
可得bode 图
二阶惯性系统的通式为:
将式子两边同时除以a 0得
令0
0a K b =为系统静态灵敏度; 20
n a a =ω为系统无阻尼固有频率;
1
012a a a =ξ为系统阻尼器 传递函数为
12)
()()(22++==n n
s s K s X s Y s H ωξω
可得传递函数的幅频与相频特性 2222)(4)1(1
)()(2n n K j H A ωωξωωωω+-==
)()()()(001222t x b t y a dt
t dy a dt t y d a =++)()()()(00012202t x a b t y dt t dy a a dt t y d a a =++
2212arctan )()(n n j H ωωωωξωωϕ--=∠= 例如传递函数
12)()()(2++==s s s X s Y s H
在MATLAB 上输入程序 num=[2];
den=[1,1,1]; figure
sys=tf(num,den); bode(sys);grid on 可得bode 图。