我是靠谱客的博主 完美哈密瓜,这篇文章主要介绍matlab画伯德图(带谐振点和-3dB带宽),现在分享给大家,希望可以做个参考。

画伯德图可以用simulink或者matlab自带的bode函数:

复制代码
1
2
3
4
5
6
7
8
9
10
11
P=bodeoptions; P.Grid='on'; P.XLim={[1e-2,100]};%设置横轴范围 P.FreqUnits='Hz';%将横坐标单位换位HZ P.YLim={[-30,3],[-135,10]};%设置纵轴范围 num1=[30,369.8,1367]; den1=[2.152E-4,0.2704,29.99,358.9,1367]; Gx_validation=tf(num1,den1); [mag,phase,wout]=bode(Gx_validation,P) %bode(Gx_validation,P) margin(Gx_validation)

但是其不能准确输出和在图中标出谐振点和-3dB的点(只能用figure下的游标数据来标),下面根据伯德图的定义,直接用传递函数G(iw),算出其幅值和幅角:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
%this function is to calculate the bode diagram without using bode function %directly. figure(1); %% -----限定坐标轴输出范围----- axisxmin=1e-2; axisxmax=1e2; axisyminmag=-inf; axisymaxmag=4; axisyminpha=-inf; axisymaxpha=45; %% -----幅频图------ subplot(2,1,1); f=logspace(-2,2,10000); %频率采样,利用logspace在横坐标log之后均匀取点,防止线性取点后画图时的不均匀 w=f*2*pi; wi=complex(0,w); %使角频率和虚数单位结合 %输入系统传递函数 G=(30*(wi).^2+127.9*wi+163.6)./(1.244e-3*(wi).^4+0.7818*(wi).^3+29.99*(wi).^2+124.1*wi+163.6) ; magnitude=20*log10(abs(G)); %幅度换算为dB单位 semilogx(f,magnitude); title('G_{a_Z} Bode Diagram'); axis([axisxmin,axisxmax,axisyminmag,axisymaxmag]); box on; %xlabel('frequency (Hz)','Fontweight','bold','FontSize',20); ylabel('Magnitude (dB)','Fontweight','bold','FontSize',20); grid minor; %加密网格 set(gca,'xticklabel',[]) %去掉横坐标数字 set(gca,'GridLineStyle','-','XGrid','on','YGrid','on'); %添加横坐标和纵坐标的网格 set(gca,'FontSize',10,'Fontweight','bold'); %调节坐标轴字体大小粗细 hold on; %% -----相频图------ subplot(2,1,2); phase=angle(G)*180/pi; %取虚数幅角值,并转换弧度为角度 semilogx(f,phase); axis([axisxmin,axisxmax,axisyminpha,axisymaxpha]); box on; xlabel('frequency (Hz)','Fontweight','bold','FontSize',10); ylabel('Phase (deg)','Fontweight','bold','FontSize',10); grid minor; %加密网格 set(gca,'GridLineStyle','-','XGrid','on','YGrid','on'); %添加横坐标和纵坐标的网格 set(gca,'FontSize',10,'Fontweight','bold'); %调节坐标轴字体大小粗细 hold on; %% -----添加谐振点----- subplot(2,1,1); [magmax,fmax] = max(magnitude); %谐振点为幅频曲线的极值点 fmax = f(fmax); plot(fmax,magmax,'o','LineWidth',2,'MarkerSize',5,'MarkerEdgeColor','k') text(fmax,magmax-2,sprintf('Resonance point:n(%.3f Hz, %.3f dB)',fmax,magmax),... 'VerticalAlignment','top','HorizontalAlignment','right') %'VerticalAlignment','bottom' hold on; %% -----添加-3dB带宽----- B=abs(magnitude+3); [x,index]=sort(B); %为了得到最接近-3dB的值,先对绝对值进行排序,index为排序前的坐标值 mag_3db=magnitude(index(1)); f_3db=f(index(1)); plot(f_3db,mag_3db,'o','LineWidth',2,'MarkerSize',5,'MarkerEdgeColor','r') text(f_3db,mag_3db,sprintf('Cut-off point:n(%.3f Hz, %.3f dB)',f_3db,mag_3db),... 'VerticalAlignment','bottom','HorizontalAlignment','left') %在目标坐标点处添加文字

 

 

 

 

最后

以上就是完美哈密瓜最近收集整理的关于matlab画伯德图(带谐振点和-3dB带宽)的全部内容,更多相关matlab画伯德图(带谐振点和-3dB带宽)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(109)

评论列表共有 0 条评论

立即
投稿
返回
顶部