我们经常会遇到使用 Matlab 画伯德图的情况,可能我们我们都知道 bode 这个函数是用来画
bode 图的,这个函数是 Matlab 内部提供的一个函数,我们可以很方便的用它来画伯德图,但是
对于初学者来说,可能用起来就没有那么方便了。
譬如我们要画出下面这个传递函数的伯德图:
1.576e010 s^2
H(s)=
------------------------------------------------------------------------------------------
s^4 + 1.775e005 s^3 + 1.579e010 s^2 + 2.804e012 s + 2.494e014
0
(这是一个用 butter 函数产生的 2 阶的,频率范围为[20 20K]HZ 的带通滤波器。)
我们可以用下面的语句:
num=[1.576e010
0];
den=[1 1.775e005
H=tf(num,den);
bode(H)
这样,我们就可以得到以下的伯德图:
2.494e014];
1.579e010
2.804e012
可能我们会对这个图很不满意,第一,它的横坐标是 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: 0
PhaseUnits: 'deg'
PhaseVisible: 'on'
PhaseWrapping: 'off'
PhaseMatching: 'off'
PhaseMatchingFreq: 0
PhaseMatchingValue: 0
我们可以通过修改上面的每一项修改伯德图的风格,比如我们使用下面的语句画我们的伯德图:
P=bodeoptions;
P.Grid='on';
P.XLim={[10
40000]};
P.XLimMode={'manual'};
P.FreqUnits='HZ';
num=[1.576e010
den=[1 1.775e005
H=tf(num,den);
bode(H,P)
这时,我们将会看到以下的伯德图:
2.494e014];
0];
0
1.579e010
2.804e012
上面这张图相对就比较好了,它的横坐标单位是 HZ,范围是[10 40K]HZ,而且打开了网格,便于
我们观察-3DB 处的频率值。
当然,你也可以改变 bodeoptions 中的其它参数,做出符合你的风格的伯德图。
来自: http://hi.baidu.com/qinshaoq/blog/item/7462b63ddfa2dac87c1e7149.html