1 伯德图是什么
伯德图bode根据系统动力学原理能画出频率响应(幅度响应(dB)和相位响应(deg:度数)),如下图所示
% 画一个系统函数的频域响应图
H = tf([-2 3.6 -32 1.7],[1 3.3 16.8 25.4 40 13 ]);
bode(H)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1527e4babc8d401b92be9ad5ffc7e52b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FsaWVyX2NoZW4=,size_16,color_FFFFFF,t_70#pic_center)
2 bode函数的使用 这是MATLAB文档中关于bode函数的所有使用语句,下面对每一条语句进行学习,每个语句都分为 1 语句 2 解释 3 程序例子 4 图片结果
bode(sys)%画一个伯德图
bode(sys1,sys2,...,sysN)% 在同一图上绘制多个动力系统的频率响应
bode(sys1,LineSpec1,...,sysN,LineSpecN)%为图中的每个系统指定颜色、线条样式和标记。
bode(___,w)%绘制系统响应以w指定的频率。
[mag,phase,wout] = bode(sys)
[mag,phase,wout] = bode(sys,w)
[mag,phase,wout,sdmag,sdphase] = bode(sys,w)
- bode(sys1,sys2,…,sysN)
在同一图上绘制多个动力系统的频率响应。所有系统必须有相同数量的输入和输出。
sys1=tf([-2 3.6 -32 1.7],[1 3.3 16.8 25.4 40 13 ]);
sys2=tf([-2 3.6],[1 3.3 16.8 25.4]);
sys3=tf([-2],[1 3.3 16.8]);
bode(sys1,sys2,sys3)%画多个伯德图
grid%画格子
![在这里插入图片描述](https://img-blog.csdnimg.cn/d1ebbfec955f4167afe53175e76e9ff9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FsaWVyX2NoZW4=,size_16,color_FFFFFF,t_70#pic_center)
- bode(___,w)
绘制系统响应以w指定的频率。如果w是形式为{wmin,wmax}的单元格数组,则bode绘制在wmin和wmax之间的频率范围内的响应。如果w是一个频率向量,则bode绘制每个指定频率的响应曲线。
sys1=tf([-2 3.6 -32 1.7],[1 3.3 16.8 25.4 40 13 ]);
sys2=tf([-2 3.6],[1 3.3 16.8 25.4]);
sys3=tf([-2],[1 3.3 16.8]);
w=[1e-2,1e+5];
w=[1e+2,1e+5];
w={0.01,100}
bode(sys1,'k.',sys2,'k-',sys3,'k*',w)%画多个伯德图
grid%画格子
![在这里插入图片描述](https://img-blog.csdnimg.cn/a1de7baadad14f75a3a3b9ecd48f681a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FsaWVyX2NoZW4=,size_16,color_FFFFFF,t_70#pic_center)
参考一下 常用的画图符号
这张图来自这篇文章:点击进入
![在这里插入图片描述](https://img-blog.csdnimg.cn/03852f2bf83f477984df6410c03a545d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FsaWVyX2NoZW4=,size_16,color_FFFFFF,t_70#pic_center)
[mag,phase,wout] = bode(sys,w)返回幅度、相位、频率向量,我们获得了数据,就可以对数据进行处理,也可以用自己的画图方法和单位。 - 下面用这个例子作为总结,也是对前面所有的复习:
%% ---------------------------------
%2017 zhao 3/5 jie gaosi wavelet filter
clear, close all
sys1=tf([-2 3.6 -32 1.7],[1 3.3 16.8 25.4 40 13 ]);
sys2=tf([-2 3.6],[1 3.3 16.8 25.4]);
interval=100;%w的另一种定义:频率限制在1e-2-1e+3之间,整个图像用interval个点来画
w = logspace(-2, 3, interval);
% ********************************************************************
figure(1)
bode(sys1,'k.',sys2,'k-',w)%画多个伯德图
% ********************************************************************
w={0.01,100}%w的一种定义:频率限制在0.01-100
figure(2)
num =[-2 3.6 -32 1.7];
den = [1 3.3 16.8 25.4 40 13 ];
[mag, phase, w] = bode(num, den, w);%用bode(sys1),会将mag转化为数组,导致无法画图
magdB = 20*log10(mag);%输出的为hz,转化为rad/s
% dBmax = 5*ones(1,interval); %画一下横线,可以实现控制上下限的效果
% dBmin = -50*ones(1,interval); %点数必须与 w 中频率点的数目相等
subplot(2, 1, 1)
% semilogx(w, magdB, '.', w, dBmax, 'r-', w, dBmin, 'r:')
semilogx(w, magdB, '-')
grid
title('BodeDiagram of G(s)')
xlabel('Frequency (rad/sec)')
ylabel('Gain dB')
subplot(2, 1, 2)
% pmax = 150*ones(1,interval);
% pmin = -150*ones(1,interval);
% semilogx( w, phase, '.', w, pmax, '--', w, pmin, ':')
semilogx( w, phase, '-')
grid%画格子
|