基于Matlab的IIR高通、带通、低通和带阻数字滤波器设计(巴特沃斯和切比雪夫I型实现) 您所在的位置:网站首页 带阻滤波器设计原理和方法图 基于Matlab的IIR高通、带通、低通和带阻数字滤波器设计(巴特沃斯和切比雪夫I型实现)

基于Matlab的IIR高通、带通、低通和带阻数字滤波器设计(巴特沃斯和切比雪夫I型实现)

2024-07-10 01:58| 来源: 网络整理| 查看: 265

关于本文滤波器具体原理可参考课程设计:https://wenku.baidu.com/view/185d84061cb91a37f111f18583d049649b660edb

本文全套源码、PPT、课设:https://download.csdn.net/download/qq_32809093/12598101

目录

实例1  数字高通巴特沃斯滤波器设计

实例2  数字高通切比雪夫I型滤波器设计

实例3  数字带通巴特沃斯滤波器设计

实例4  数字带通切比雪夫I型滤波器设计

实例5  数字低通巴特沃斯滤波器设计

实例6  数字低通切比雪夫I型滤波器设计

实例7  数字带阻巴特沃斯滤波器设计

实例8  数字带阻切比雪夫I型滤波器设计

附录:freqz_m.m文件

 实例1  数字高通巴特沃斯滤波器设计

注:如果freqz_m函数报错,是由于您的Matlab版本过高,可将文章附录freqz_m.m文件复制到运行目录即可

要求:抽样频率为10KHZ,通带截止频率为2.5KHZ,通带衰减不大于2dB,阻带上限截止频率为1.5KHZ,阻带衰减不小于15 dB。

                                                                \LARGE w=2*pi *f/f_{s}

Ap=2;As=15;%设置通带允许最大衰减设置为2dB,阻带应达到的最小衰减为15dB Nn=1000;%抽样次数 Fs=10000;%抽样频率为10KHZ F=2500;%当前频率 F_sh=1500;%阻带上限截止频率 %MATLAB工具函数常采用标准化频率,wp和ws的取值范围为0~1 wp=F*2/Fs; ws=F_sh*2/Fs;%所以通带截止频率为wp/pi ,阻带截止频率为ws/pi [N,wn]=buttord(wp,ws,Ap,As);%计算巴特沃斯滤波器阶次和截止频率 [b,a]=butter(N,wn,'high');%频率变换法设计巴特沃斯高通滤波器 [db,mag,pha,grd,w]=freqz_m(b,a); subplot(2,1,1) plot(w*Fs/(2*pi),mag); xlabel('f/Hz');%频率(HZ) ylabel('幅度/dB'); title('高通巴特沃斯滤波器') grid on; subplot(2,1,2); plot(w*Fs/(2*pi),180/pi*unwrap(pha)); xlabel('f/Hz'); ylabel('相位/角度'); grid on;

得滤波器阶数为3,截止频率为pi*0.467rad/s

        

mag增益改为db查看衰减分贝dB:(1500hz时衰减15db,2500hz时衰减1.863db,符合要求)

# 实例2  数字高通切比雪夫I型​​​​​​​滤波器设计

要求:抽样频率为10KHZ,通带截止频率为2.5KHZ,通带衰减不大于2dB,阻带上限截止频率为1.5KHZ,阻带衰减不小于15 dB。

Ap=2;As=15;%设置通带允许最大衰减设置为2dB,阻带应达到的最小衰减为15dB Nn=256;%抽样次数 Fs=10000;%抽样频率为10KHZ F=2500;%当前频率 F_sh=1500;%阻带上限截止频率 %MATLAB工具函数常采用标准化频率,wp和ws的取值范围为0~1 wp=F*2/Fs; ws=F_sh*2/Fs;%所以通带截止频率为wp/pi ,阻带截止频率为ws/pi [N,Wn]=cheb1ord(wp,ws,Ap,As);%计算切比雪夫滤波器阶次和截止频率 [b,a]=cheby1(N,Ap,Wn,'high');%频率变换法设计切比雪夫高通滤波器 [db,mag,pha,grd,w]=freqz_m(b,a); subplot(2,1,1) plot(w*Fs/(2*pi),mag); xlabel('f/Hz');%频率(HZ) ylabel('幅度/dB'); title('数字高通切比雪夫I型滤波器'); grid on; subplot(2,1,2); plot(w*Fs/(2*pi),180/pi*unwrap(pha)); xlabel('f/Hz'); ylabel('相位/角度'); grid on;

mag增益改为db查看衰减分贝dB:

实例3  数字带通巴特沃斯滤波器设计

要求:抽样频率为2KHZ,通带范围是300HZ到400HZ,通带衰减不大于3dB,在200HZ和500HZ处衰减不小于18dB。

Fs=2000;%给定抽样频率 wp_d=300;%通带下限截止频率 wp_s=400;%通带上限截止频率 ws_d=200;%阻带下限截止频率 ws_s=500;%阻带上限截止频率 wp=[wp_d wp_s]*2/Fs; ws=[ws_d ws_s]*2/Fs;%计算通带截止频率wp,阻带频率ws Ap=3;As=18;%设置通带允许最大衰减设置为3dB,阻带应达到的最小衰减为18dB Nn=256;%取样点数 [N,wn]=buttord(wp,ws,Ap,As);%计算巴特沃斯滤波器阶次和截止频率 %N为滤波器阶数 wn为滤波器截止频率 数字滤波器 [b,a]=butter(N,wn,'bandpass');%频率变换法设计巴特沃斯带通滤波器 [db,mag,pha,grd,w]=freqz_m(b,a); %求出巴特沃斯带通滤波器幅频、幅度、相位等 subplot(2,1,1) plot(w*Fs/(2*pi),mag); xlabel('f/Hz');%频率(HZ) ylabel('幅度/dB'); axis([0,1000,0,1.5]);%设置标尺范围 title('数字带通巴特沃斯滤波器') grid on; subplot(2,1,2); plot(w*Fs/(2*pi),180/pi*unwrap(pha)); xlabel('f/Hz'); ylabel('相位/角度'); grid on;

mag增益改为db查看衰减分贝dB:

实例4  数字带通切比雪夫I型滤波器设计

要求:抽样频率为2KHZ,通带范围是300HZ到400HZ,通带衰减不大于3dB,在200HZ和500HZ处衰减不小于18dB。

Fs=2000;%给定抽样频率 wp_d=300;%通带下限截止频率 wp_s=400;%通带上限截止频率 ws_d=200;%阻带下限截止频率 ws_s=500;%阻带上限截止频率 wp=[wp_d wp_s]*2/Fs; ws=[ws_d ws_s]*2/Fs;%计算通带截止频率wp,阻带频率ws Ap=3;As=18;%设置通带允许最大衰减设置为3dB,阻带应达到的最小衰减为18dB Nn=256;%取样点数 [N,Wn]=cheb1ord(wp,ws,Ap,As);%计算切比雪夫滤波器阶次和截止频率 %N为滤波器阶数 wn为滤波器截止频率 数字滤波器 [b,a]=cheby1(N,Ap,Wn);%频率变换法设计切比雪夫高通滤波器 [db,mag,pha,grd,w]=freqz_m(b,a); %求出切比雪夫带通滤波器幅频、幅度、相位等 subplot(2,1,1) plot(w*Fs/(2*pi),mag); xlabel('f/Hz');%频率(HZ) ylabel('幅度/dB'); axis([0,1000,0,1.5]);%设置标尺范围 title('数字带通切比雪夫I型滤波器') grid on; subplot(2,1,2); plot(w*Fs/(2*pi),180/pi*unwrap(pha)); xlabel('f/Hz'); ylabel('相位/角度'); grid on;

mag增益改为db查看衰减分贝dB:

实例5  数字低通巴特沃斯滤波器设计

要求:抽样频率为10KHZ,通带截止频率为2.5KHZ,通带衰减不大于2dB,阻带上限截止频率为1.5KHZ,阻带衰减不小于15 dB。

Ap=2;As=15;%设置通带允许最大衰减设置为2dB,阻带应达到的最小衰减为15dB Nn=1000;%抽样次数 Fs=10000;%抽样频率为10KHZ F=2500;%当前频率 F_sh=1500;%阻带上限截止频率 %MATLAB工具函数常采用标准化频率,wp和ws的取值范围为0~1 wp=F*2/Fs; ws=F_sh*2/Fs;%所以通带截止频率为wp/pi ,阻带截止频率为ws/pi [N,wn]=buttord(wp,ws,Ap,As);%计算巴特沃斯滤波器阶次和截止频率 [b,a]=butter(N,wn);%频率变换法设计巴特沃斯低通滤波器 [db,mag,pha,grd,w]=freqz_m(b,a); subplot(2,1,1) plot(w*Fs/(2*pi),mag);%db为分贝,mag为增益 xlabel('f/Hz');%频率(HZ) ylabel('幅度'); title('数字低通巴特沃斯滤波器') grid on; subplot(2,1,2); plot(w*Fs/(2*pi),180/pi*unwrap(pha)); xlabel('f/Hz'); ylabel('相位/角度'); grid on;

mag增益改为db查看衰减分贝dB:

实例6  数字低通切比雪夫I型滤波器设计

要求:抽样频率为10KHZ,通带截止频率为2.5KHZ,通带衰减不大于2dB,阻带上限截止频率为1.5KHZ,阻带衰减不小于15 dB。

Ap=2;As=15;%设置通带允许最大衰减设置为2dB,阻带应达到的最小衰减为15dB Nn=256;%抽样次数 Fs=10000;%抽样频率为10KHZ F=2500;%当前频率 F_sh=1500;%阻带上限截止频率 %MATLAB工具函数常采用标准化频率,wp和ws的取值范围为0~1 wp=F*2/Fs; ws=F_sh*2/Fs;%所以通带截止频率为wp/pi ,阻带截止频率为ws/pi [N,wn]=cheb1ord(wp,ws,Ap,As);%计算切比雪夫I型滤波器阶次和截止频率 [b,a]=cheby1(N,Ap,wn,'low');%频率变换法设计切比雪夫I型低通滤波器 [db,mag,pha,grd,w]=freqz_m(b,a); subplot(2,1,1) plot(w*Fs/(2*pi),db);%db为分贝,mag为增益 xlabel('f/Hz');%频率(HZ) ylabel('幅度'); title('数字低通切比雪夫I型滤波器') grid on; subplot(2,1,2); plot(w*Fs/(2*pi),180/pi*unwrap(pha)); xlabel('f/Hz'); ylabel('相位/角度'); grid on;

mag增益改为db查看衰减分贝dB:

实例7  数字带阻巴特沃斯滤波器设计

要求:抽样频率为2kHZ,阻带范围是300HZ到400HZ,阻带范围衰减应大于18dB,在200HZ和500HZ处衰减小于3dB。

Fs=2000;%给定抽样频率 wp_d=300;%阻带下限截止频率 wp_s=400;%阻带上限截止频率 ws_d=200;%通带下限截止频率 ws_s=500;%通带上限截止频率 wp=[wp_d wp_s]*2/Fs; ws=[ws_d ws_s]*2/Fs;%计算阻带截止频率wp,通带频率ws Ap=3;As=18;%设置通带允许最大衰减设置为3dB,阻带应达到的最小衰减为18dB Nn=256;%取样点数 [N,wn]=buttord(wp,ws,Ap,As);%计算巴特沃斯滤波器阶次和截止频率 %N为滤波器阶数 wn为滤波器截止频率 数字滤波器 [b,a]=butter(N,wn,'stop');%频率变换法设计巴特沃斯带阻滤波器 [db,mag,pha,grd,w]=freqz_m(b,a); %求出巴特沃斯带阻滤波器幅频、幅度、相位等 subplot(2,1,1) plot(w*Fs/(2*pi),mag);%db为分贝,mag为增益 xlabel('f/Hz');%频率(HZ) ylabel('幅度'); % axis([0,1000,0,1.5]);%设置标尺范围 title('数字带通巴特沃斯滤波器') grid on; subplot(2,1,2); plot(w*Fs/(2*pi),180/pi*unwrap(pha)); xlabel('f/Hz'); ylabel('相位/角度'); grid on;

mag增益改为db查看衰减分贝dB:

实例8  数字带阻切比雪夫I型滤波器设计

要求:抽样频率为2kHZ,阻带范围是300HZ到400HZ,阻带范围衰减应大于18dB,在200HZ和500HZ处衰减小于3dB。

Fs=2000;%给定抽样频率 wp_d=300;%阻带下限截止频率 wp_s=400;%阻带上限截止频率 ws_d=200;%通带下限截止频率 ws_s=500;%通带上限截止频率 wp=[wp_d wp_s]*2/Fs; ws=[ws_d ws_s]*2/Fs;%计算阻带截止频率wp,通带频率ws Ap=3;As=18;%设置带阻最小衰减设置为18dB,通带最大衰减为3dB Nn=256;%取样点数 [N,wn]=cheb1ord(wp,ws,Ap,As);%计算滤波器阶次和截止频率 %N为滤波器阶数 wn为滤波器截止频率 数字滤波器 [b,a]=cheby1(N,Ap,wn,'stop');%频率变换法设计带阻切比雪夫滤波器 [db,mag,pha,grd,w]=freqz_m(b,a); %求出带阻切比雪夫滤波器幅频、幅度、相位等 subplot(2,1,1) plot(w*Fs/(2*pi),mag);%db为分贝,mag为增益 xlabel('f/Hz');%频率(HZ) ylabel('幅度'); % axis([0,1000,0,1.5]);%设置标尺范围 title('数字带阻切比雪夫I型滤波器') grid on; subplot(2,1,2); plot(w*Fs/(2*pi),180/pi*unwrap(pha)); xlabel('f/Hz'); ylabel('相位/角度'); grid on;

mag增益改为db查看衰减分贝dB:

附录:freqz_m.m文件

function [db,mag,pha,grd,w] = freqz_m(b,a); % Modified version of freqz subroutine % ------------------------------------ % [db,mag,pha,grd,w] = freqz_m(b,a); % db = Relative magnitude in dB computed over 0 to pi radians % mag = absolute magnitude computed over 0 to pi radians % pha = Phase response in radians over 0 to pi radians % grd = Group delay over 0 to pi radians % w = 501 frequency samples between 0 to pi radians % b = numerator polynomial of H(z) (for FIR: b=h) % a = denominator polynomial of H(z) (for FIR: a=[1]) % [H,w] = freqz(b,a,1000,'whole'); H = (H(1:1:501))'; w = (w(1:1:501))'; mag = abs(H); db = 20*log10((mag+eps)/max(mag)); pha = angle(H); % pha = unwrap(angle(H)); grd = grpdelay(b,a,w); % grd = diff(pha); % grd = [grd(1) grd]; % grd = [0 grd(1:1:500); grd; grd(2:1:501) 0]; % grd = median(grd)*500/pi;

结语:以上分享如果不足之处,还希望大家能够给予留言指正,共同进步!!!

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有