基于matlab的FIR低通高通带通带阻滤波器设计.docx
《基于matlab的FIR低通高通带通带阻滤波器设计.docx》由会员分享,可在线阅读,更多相关《基于matlab的FIR低通高通带通带阻滤波器设计.docx(15页珍藏版)》请在冰豆网上搜索。
基于matlab的FIR低通高通带通带阻滤波器设计
北京师范大学
课程设计报告
课程名称:
DSP
设计名称:
FIR低通、高通带通和带阻数字滤波器的设计
姓名:
学号:
班级:
指导教师:
起止日期:
课程设计任务书
学生班级:
学生姓名:
学号:
设计名称:
FIR低通、高通带通和带阻数字滤波器的设计
起止日期:
指导教师:
设计目标:
1、采用Kaiser窗设计一个低通FIR滤波器要求:
采样频率为8kHz;
通带:
0Hz~1kHz,带内波动小于5%;
阻带:
1.5kHz,带内最小衰减:
Rs=40dB。
2、采用hamming窗设计一个高通FIR滤波器要求:
通带截至频率wp=,
阻带截止频率ws=,
通带最大衰减,阻带最小衰减
3、采用hamming设计一个带通滤波器
低端阻带截止频率wls=0.2*pi;
低端通带截止频率wlp=0.35*pi;
高端通带截止频率whp=0.65*pi;
高端阻带截止频率whs=0.8*pi;
4、采用Hamming窗设计一个带阻FIR滤波器
要求:
通带:
0.35pi~0.65pi,带内最小衰减Rs=50dB;
阻带:
0~0.2pi和0.8pi~pi,带内最大衰减:
Rp=1dB。
FIR低通、高通带通和带阻数字滤波器的设计
一、设计目的和意义
1、熟练掌握使用窗函数的设计滤波器的方法,学会设计低通、带通、带阻滤波器。
2、通过对滤波器的设计,了解几种窗函数的性能,学会针对不同的指标选择不同的窗函数。
二、设计原理
一般,设计线性相位FIR数字滤波器采用窗函数法或频率抽样法,本设计采用窗函数法,分别采用海明窗和凯泽窗设计带通、带阻和低通。
如果所希望的滤波器的理想频率响应函数为,如理想的低通,由信号系统的知识知道,在时域系统的冲击响应hd(n)将是无限长的,如图2、图3所示。
图2图3
若时域响应是无限长的,则不可能实现,因此需要对其截断,即设计一个FIR滤波器频率响应来逼近,即用一个窗函数w(n)来截断hd(n),如式3所示:
(式1)。
最简单的截断方法是矩形窗,实际操作中,直接取hd(n)的主要数据即可。
作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数为:
(式2)
令,则
(式3),
式中,N为所选窗函数的长度。
如果要求线性相位特性,还必须满足:
(式6),根据式6中的正、负和长度N的奇偶性又将线性相位FIR滤波器分成四类。
要根据所设计的滤波器特性正确选择其中一类。
例如:
要设计线性相位低通特性,可选择类。
三、详细设计步骤
(公式4)
表1
1、采用Kaiser窗设计一个低通FIR滤波器要求:
采样频率为8kHz;
通带:
0Hz~1kHz,带内波动小于5%;
阻带:
1.5kHz,带内最小衰减:
Rs=40dB
思路分析:
根据公式4可以得到通带截止频率为0.25,阻带截止频率为0.375。
根据表1可算得,则凯泽窗的时域表达式可以通过=kaiser(N)得到。
低通滤波器的时域表达式是,其中应该关于对称。
这样,滤波器就得到了为:
。
最后利用函数freqz得到加窗后的滤波器的幅频响应和相频响应。
2、采用Hamming窗设计一个高通线性相位FIR滤波器要求:
设计用窗函数法设计线性相位高通滤波器,要求截至频率wp=,阻带截止频率ws=,通带最大衰减,阻带最小衰减。
有如下公式计算高通滤波器的通带截止频率以及阻带截止频率:
(1)
(2)
(3)
(4)
分析:
根据设计要求给出的高通滤波器的性能指标以及
(1)
(2)(3)(4)公式计算得出该高通滤波器性能指标的另一种表示为:
通带偏差0.0292
阻带偏差0.0032
通带边沿频率1000KHZ
阻带边沿频率600KHZ
选择窗函数W(n),计算窗函数长度N,由已知条件知:
阻带最小衰减
参照表
(1)可知汉宁窗和哈明窗都满足要求。
我选择的窗函数是汉宁窗。
过渡带宽度
汉宁窗的精确过度带宽
故要求,
解得:
又根据前面分析的四种类型的FIR滤波器的可知,对于高通滤波器,N必须取奇数,
故N=31
与汉宁窗函数的可以得知
3、采用Hamming窗设计一个带通线性相位FIR滤波器要求:
低端阻带截止频率wls=0.2*pi;
低端通带截止频率wlp=0.35*pi;
高端通带截止频率whp=0.65*pi;
高端阻带截止频率whs=0.8*pi;
思路分析:
由条件可知通带为0.3pi,由通带大小可设计滤波器。
这样,滤波器就得到了为:
。
最后利用函数freqz得到加窗后的滤波器的幅频响应和相频响应。
4、采用Hamming窗设计一个带阻FIR滤波器
要求:
阻带:
0.35pi~0.65pi,带内最小衰减Rs=50dB;
通带:
0~0.2pi和0.8pi~pi,带内最大衰减:
Rp=1dB
思路分析:
根据要求知阻带截止频率分别为0.35,。
通带截止频率为0.2和0.8。
.根据表1可算得,则海明窗的时域表达式可以通过=hamming(N)得到。
带阻滤波器可以看成是高通加低通。
它的时域表达式是,其中应该关于对称。
这样,滤波器就得到了为:
。
最后利用函数freqz得到加窗后的滤波器的幅频响应和相频响应。
附程序:
%子函数,产生理想滤波器的时域波形
functionhd=ideal(w,N);%1,2型理想低通滤波器单位单位脉冲响应hd(n),w为窗口长度,N为截止频率%
alpha=(N-1)/2;
n=[0:
N-1];
m=n-alpha+eps;%加一个小数以避免零作除数
hd=sin(w*m)./(pi*m);
四程序代码
1、低通FIR滤波器:
%采样频率为8kHz;
%通带:
0Hz~1kHz,带内波动小于5%;wp=0.、25pi
%阻带:
1.5kHz,带内最小衰减:
Rs=40dB。
wst=0.375pi
%
clc
clear
Rs=40;
Wp=0.25*pi;%根据通带:
0Hz~1kHz,带内波动小于5%;得wp=0.125pi
Wst=0.375*pi;%阻带:
1.5kHz,带内最小衰减:
Rs=40dB。
得wst=0.1875pi
dert_w=Wst-Wp;
%N=ceil((Rs-7.95)*2*pi/(14.36*dert_w)+1);
N=ceil((10*pi/dert_w)+1);
beta=0.5842*(Rs-21)^0.4+0.07886*(Rs-21);
hd=ideal((Wst-Wp)/2,N);%滤波器在时域系统的冲击响应
B=kaiser(N,beta);%凯泽窗
h=hd.*(B)';%加窗后
[H,m]=freqz(h,[1],1024,'whole');%获取频率响应
mag=abs(H);%幅值
db=20*log10((mag+eps)/max(mag));%分贝数
pha=angle(H);%相位
%绘图
w=m/pi
figure
(1);
subplot(2,2,1);
stem(hd);
xlabel('n');
ylabel('hd');
title('滤波器时域');
subplot(2,2,2);
plot(w,mag);
xlabel('w');
ylabel('h');
title('加窗后幅度响应');
subplot(2,2,3);
plot(w,db);
xlabel('w');
ylabel('db');
title('分贝数');
axis([01-1000]);
subplot(2,2,4);
plot(w,pha);%实际低通滤波器单位脉冲响应
xlabel('w');
ylabel('相位');
title('相频响应');
axis([01-44]);
2:
高通滤波器设计
clearall;
wp=0.6*pi;
ws=0.4*pi;
tr_width=wp-ws;
N=ceil(6.2*pi/tr_width)
n=0:
1:
N-1;
wc=(ws+wp)/2;
hd=ideal_hp1(wc,N);
w_han=(hanning(N))';
h=hd.*w_han;
[db,mag,pha,w]=freqz_m2(h,[1]);
delta_w=2*pi/1000;
Ap=-(min(db(wp/delta_w+1:
1:
501)))
As=-round(max(db(1:
1:
ws/delta_w+1)))
subplot(2,2,1),
stem(n,hd)
title('理想单位脉冲响应hd(n)')
subplot(2,2,2)
stem(n,w_han)
title('汉宁窗w(n)')
subplot(2,2,3)
stem(n,h)
title('实际单位脉冲响应h(n)')
subplot(2,2,4)
plot(w/pi,db)
title('幅度相应(db)')
axis([0,1,-100,10])
3:
带通滤波器设计
wls=0.2*pi;
wlp=0.35*pi;
whp=0.65*pi;
wc=[wlp/pi,whp/pi];
B=wlp-wls;
N=ceil(8/0.15);
n=0:
N-1;
window=hanning(N);
[h1,w]=freqz(window,1);
figure
(1);
stem(window);
axis([06001.2]);
grid;
xlabel('n');
title('Hanning窗函数');
figure
(2);
plot(w/pi,20*log(abs(h1)/abs(h1
(1))));
axis([01-3500]);
grid;
xlabel('w/pi');
ylabel('幅度(dB)');
title('Hanning窗函数的频谱');
hn=fir1(N-1,wc,hanning(N));
[h2,w]=freqz(hn,1,512);
figure(3);
stem(n,hn);
axis([060-0.250.25]);
grid;
xlabel('n');
ylabel('h(n)');
title(‘Hanning窗函数的单位脉冲响应’);
figure(4);
plot(w/pi,20*log(abs(h2)/abs(h2
(1))));
grid;
xlabel('w/pi');
ylabel('幅度(dB)');
4.带阻滤波器设计
%采用Hamming窗设计一个带阻FIR滤波器
%要求:
%阻带:
0.35pi~0.65pi,带内最小衰减Rs=50dB;
%通带:
0~0.2pi和0.8pi~pi,带内最大衰减:
Rp=1dB。
clc
clear
Wpl=0.2*pi;%根据阻带:
0.35pi~0.65pi,通带:
0~0.2pi和0.8pi~pi,
Wph=0.8*pi;%确定两个通带截止频率和两个阻带截止频率。
Wsl=0.35*pi;
Wsh=0.65*pi;
dert_w=min((Wsl-Wpl),(Wph-Wsh));
N=ceil(6.6*pi/dert_w);%根