基于巴特沃斯的数字滤波器设计及实现-巴特沃斯滤波器算法

巴特沃斯滤波器幅频特性

巴特沃斯低通滤波器的幅度二次方函数如下:

基于巴特沃斯的数字滤波器设计及实现-巴特沃斯滤波器算法

式中,n为阶数; wcw_{c} 为滤波器的截止频率,单位是 rad/srad/s ;当输入信号频率 ω\omega =截止频率 ωc\omega_{c} 时, |H(ω)|2=1/2|H(\omega)|^2=1/2wcw_{c} 对应的是滤波器-3dB点。下图给出不同阶次的巴特沃斯滤波器的幅频特性曲线。

基于巴特沃斯的数字滤波器设计及实现-巴特沃斯滤波器算法

从图上可以看出巴特沃斯滤波器具有以下几个特点:

幅值函数是单调递减的,在 ω=0\omega=0 处,具有最大的幅值 |H(ω)|=1|H(\omega)|=1 .在 ω=ωc\omega=\omega_{c} 处, |H(ωc)|=0.707=0.707|H(0)||H(\omega_{c})|=0.707=0.707|H(0)| ,即 |H(ωc)||H(\omega_{c})||H(0)||H(0)| 下降了3dB。当 ω\omega 趋于无穷时,幅值趋于0,。当阶数n增加时,通带幅频特性变平,阻带幅频特性衰减加快,过渡带变短,整个幅频特性趋于理想低通滤波特性。

巴特沃斯滤波器的系统函数

巴特沃斯滤波器各阶归一化的分母多项式如下表:

基于巴特沃斯的数字滤波器设计及实现-巴特沃斯滤波器算法

其中,s¯=s/ωc\bar{s}=s/\omega_{c} ,设计巴特沃斯型的各阶滤波器时,直接代入即可。

一阶滤波器的传递函数

H(s)=1s¯+1=1sωc+1H(s)=\frac{1}{\bar{s}+1}=\frac{1}{\frac{s}{\omega_{c}}+1}

得到数字滤波器H(z)

这里使用向后差分法,将床底函数中的s用 1−z−1T\frac{1-z^{-1}}{T} 代替,其中T代表的是控制器计算周期。

H(z)=ωcs+ωc=ωc1−z−1T+ωc=ωcTωcT+1−z−1=Y(k)X(k)H(z)=\frac{\omega_{c}}{s+\omega_{c}}=\frac{\omega_{c}}{\frac{1-z^{-1}}{T}+\omega_{c}}=\frac{\omega_{c}T}{\omega_{c}T+1-z^{-1}}=\frac{Y(k)}{X(k)}

能搭出Simulink模型的差分方程

Y(k)⋅ωc⋅T+Y(k)−Y(k−1)=ωc⋅T⋅X(k)Y(k)\cdot\omega_{c}\cdot T+Y(k)-Y(k-1)=\omega_{c} \cdot T\cdot X(k)

即: (ωc⋅T+1)⋅Y(k)=Y(k−1)+ωc⋅T⋅X(k)(\omega_{c}\cdot T+1)\cdot Y(k)=Y(k-1)+\omega_{c} \cdot T\cdot X(k)

即: Y(k)=Y(k−1)+ωc⋅T⋅X(k)ωc⋅T+1Y(k)=\frac{Y(k-1)+\omega_{c} \cdot T\cdot X(k)}{\omega_{c}\cdot T+1}

依据差分方程搭建Simulink模型

基于巴特沃斯的数字滤波器设计及实现-巴特沃斯滤波器算法

图中,AzArray来自MATLAB工作空间,导入试验场采集到的实车簧上加速度数据,wc为截止频率,我们习惯用hz表示,所以这里多乘以2pi。Y为滤波后输出。信号线上加了两个wifi,是为了将仿真数据记录下来,在MATLAB用脚本绘图分析。仿真步长为0.002s。

滤波效果对比分析

clc;clear;close all; %% 准备导入Simulink中的实验数据 Az=importdata(Az.mat); Ts=0.002; t=(0:length(Az)1)*Ts; AzArray=[t;Az]; wc=30; %hz %% 运行Simulink仿真,并提取仿真结果 sim untitled.slx; X=ans.logsout{2}.Values.Data; Y=ans.logsout{1}.Values.Data; t=ans.tout; %% 绘制原始数据和经过滤波器后的时域图对比 figure hold on;box on;grid on; plot(t,X,LineWidth,2); plot(t,Y,LineWidth,2); xlabel(time t/s); ylabel(value); title(滤波前后对比); legend(滤波前,滤波后); %% 计算连续传递函数仿真结果,用来绘制连续传递函数 s=tf(s); sys_s=wc/(s+wc); % w=(0:250)*2*pi; [mag,phase,wout]=bode(sys_s); %% 用tfestimare函数估计离散滤波器的传递函数 fs=500; nfft=length(X); window=hanning(nfft); noverlap=0.5; [txy,f]=tfestimate(X,Y,window,noverlap,[],fs); %% 连续与离散传递函数对比 figure hold on;box on;grid on; plot(wout,squeeze(mag),LineWidth,2); plot(f,abs(txy),LineWidth,2); xlim([0,50]); xlabel(频率 hz); ylabel(H(w)); title(连续滤波器与离散后结果对比); legend(连续,离散后);

运行结果如下:

基于巴特沃斯的数字滤波器设计及实现-巴特沃斯滤波器算法
基于巴特沃斯的数字滤波器设计及实现-巴特沃斯滤波器算法

从时域图上看,有达到滤波效果。

基于巴特沃斯的数字滤波器设计及实现-巴特沃斯滤波器算法

传递函数的对比,可以发现,数字滤波器跟连续滤波器传递函数之间还是有差异,不过可以接受。在连续到离散变化中,用不同的变换方法,如双线性变换,结果可能会有点差异。

免责声明:文章内容来自互联网,版权归原作者所有,本站仅提供信息存储空间服务,真实性请自行鉴别,本站不承担任何责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:基于巴特沃斯的数字滤波器设计及实现-巴特沃斯滤波器算法 https://www.bxbdf.com/zsbk/zt/8095.html

(0)
上一篇 2024年3月31日 03:22:07
下一篇 2024年3月31日 03:55:51

相关推荐

联系我们

在线咨询: QQ交谈

邮件:362039258#qq.com(把#换成@)

工作时间:周一至周五,10:30-16:30,节假日休息。