Matlab中Bode图的绘制技巧.doc
Matlab中Bode图的绘制技巧我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。 譬如我们要画出下面这个传递函数的伯德图: 1.576e010 s2H(s)= -s4 + 1.775e005 s3 + 1.579e010 s2 + 2.804e012 s + 2.494e014 (这是一个用butter函数产生的2阶的,频率范围为20 20KHZ的带通滤波器。)我们可以用下面的语句:num=1.576e010 0 0;den=1 1.775e005 1.579e010 2.804e012 2.494e014;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: 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 0 0;den=1 1.775e005 1.579e010 2.804e012 2.494e014;H=tf(num,den);bode(H,P) 这时,我们将会看到以下的伯德图:上面这张图相对就比较好了,它的横坐标单位是HZ,范围是10 40KHZ,而且打开了网格,便于我们观察-3DB处的频率值。当然,你也可以改变bodeoptions中的其它参数,做出符合你的风格的伯德图。是这样的,运行命令ctrlpref,出现控制系统工具箱的设置页面,Units改为Hz就好了R = abs(Z)theta = angle(Z)4中 =的 (技技 好 为 面的工控, 运,图伯风合符,的中 改你值值 -们于网打而 标的,比相图伯以会我) () , 0. 0 0 . 0 00 =' ' '= 0 = ' = 图德们语下用比,的修每上改 : : : ' ': ' ' '' ' : 0 ' ': 0 容下以 入中格图德们定何来我)解 加在以我点开没格;爽看让的坐第 坐望们我 是横,满个对们图德以以就 () . . . 0 句句用。通 为率,的数 一 + 0 +- =0 图伯函传下要如了便有来起说来对,伯它便很可函的部内 数这, 画是这 道我我况的伯 用会