bode图实际上描述的就是系统的频率响应,首先对画系统频率响应的方法进行讨论。
下面代码给出了怎么去画滤波器的频率响应(幅频和相频曲线),以及滤波的方法。
clear, close all
%% initialize parameters
% 载波频率
samplerate = 1000; % in Hz 采样率
N = 512; % number of points, must be even, better be power of 2
%% define a and b coeffients of H (transfer function)
a = [1 -0.2 0.8]; % denominator terms
b = [0.2 0.5 0]; % numerator terms
%% 或者下面:
N = 512;
[h1 , ftp] = freqz(b,a,N,samplerate);
mag = 20*log10(abs(h1)); % get magnitude of spectrum in dB
phase = angle(h1)/pi*180; % get phase in deg.
figure,
subplot(2,1,1),semilogx(ftp,mag)
xlabel('Frequency (Hz)'),ylabel('Magnitude (dB)')
grid on
subplot(2,1,2),semilogx(ftp,phase,'r')
xlabel('Frequency (Hz)'),ylabel('Phase (deg.)')
grid on
%% 信号滤波
acc_magFilt = filtfilt(b, a, acc_magFilt);
给信号滤波的过程中,需要注意幅频响应。如果在带通范围内不是1的话,就会改变信号的幅值,就会改变最终加速度输出的信号。另外,上面的图就是bode图,但是是基于离散系统的。
上面是一个离散系统,对于一个连续系统,可以直接调用bode(b,a)就可以画出传递函数的bode图了。
总结来说有以下几点:
对于系统传递函数:
G ( s ) = a s + a G(s)=\frac{a}{s+a} G(s)=s+aa
分析频率响应:
∣ G ( j ω ) ∣ = 1 1 + ( ω a ) 2 |G(j \omega)|=\sqrt{\frac{1}{1+\left(\frac{\omega}{a}\right)^{2}}} ∣G(jω)∣=1+(aω)21
∠ G ( j ω ) = − arctan ( w a ) \angle G(j \omega)=-\arctan \left(\frac{w}{a}\right) ∠G(jω)=−arctan(aw)
∣ G ( j ω ) ∣ = 1 20 log ∣ G ( j ω ) ∣ = 0 ∠ G ( j ω ) = 0 \begin{array}{l} | G(j \omega)| = 1\\ 20 \log|G(j \omega)|=0 \\ \angle G(j \omega)=0 \end{array} ∣G(jω)∣=120log∣G(jω)∣=0∠G(jω)=0
这个-3dB很重要,表达的是输出的振幅是输入的振幅的sqrt(1/2),能量是一半的关系。
∠ G ( g w ) = − arctan 1 = − 4 5 ∘ \angle G(g w)=-\arctan 1=-45^{\circ} ∠G(gw)=−arctan1=−45∘
bode图如下:
实际上,我们可以将级联系统的子系统bode图进行累加,那么我们就得到了新的级联系统的真正的bode图了。原理如上。