用窗函数法设计FIR数字滤波器文档格式.docx
《用窗函数法设计FIR数字滤波器文档格式.docx》由会员分享,可在线阅读,更多相关《用窗函数法设计FIR数字滤波器文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
窗函数设计法的基本原理是用有限长单位脉冲响应序列
逼近
由于
往往是无限长序列,而且是非因果的,所以用窗函数
将
截断,并进行加权处理,得到:
(4.2)
就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数
为
(4.3)
式中,N为所选窗函数
的长度。
我们知道,用窗函数法设计的滤波器性能取决于窗函数
的类型及窗口长度N的取值。
设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N。
各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见表4.1。
表1各种窗函数的基本参数
窗函数
旁瓣峰值幅度/dB
过渡带宽
阻带最小衰减/dB
矩形窗
-13
4π/N
-12
三角形窗
-25
8π/N
汉宁窗
-31
-44
哈明窗
-41
-53
不莱克曼窗
-57
12π/N
-74
凯塞窗(α=7.865)
10π/N
-80
这样选定窗函数类型和长度N之后,求出单位脉冲响应
,并按照式(4.3)求出
是否满足要求,要进行演算。
一般在
尾部加零使长度满足2的整数次幂,以便用FFT计算
如果要观察细节,补零点数增多即可。
如果
不满足要求,则要重新选择窗函数类型和长度N,再次验算,直至满足要求。
如果要求线性相位特性,则
还必须满足
根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。
要根据所设计的滤波特性正确选择其中一类,例如,要设计线性相位低通特性,可以选择
这一类,而不能选择
这一类。
主程序框图如图4.1所示。
其中幅度特性要求用dB表示。
设
画图时,用
打印幅度特性。
第k点对应的频率
为使曲线包络更接近
的幅度特性曲线,DFT变换区间要选大些。
例如窗口长度N=33时,可通过在
末尾补零的方法,使长度变为64,再进行64点DFT,则可以得到更精确的幅度衰减特性曲线。
下面给出MATLAB主程序:
%实验四,用窗函数法设计FIR数字滤波器
b=1;
closeall;
i=0;
while(b);
temp=menu('
选择窗函数长度N'
'
N=10'
N=15'
N=20'
N=25'
N=30'
N=33'
N=35'
N=40'
N=45'
N=50'
N=55'
N=60'
N=64'
);
menu1=[10,15,20,25,30,33,35,40,45,50,55,60,64];
N=menu1(temp);
选择逼近理想低通滤波器截止频率Wc'
Wc=pi/4'
Wc=pi/2'
Wc=3*pi/4'
Wc=pi'
Wc=0.5'
Wc=1.0'
Wc=1.5'
Wc=2.0'
Wc=2.5'
Wc=3.0'
menu2=[pi/4,pi/2,3*pi/4,pi,0.5,1,1.5,2,2.5,3];
w=menu2(temp);
n=[0:
(N-1)];
hd=ideal(w,N);
%得到理想低通滤波器
k=menu('
请选择窗口类型:
'
boxcar'
hamming'
hanning'
blackman'
ifk==1
B=boxcar(N);
string=['
Boxcar'
N='
num2str(N)];
elseifk==2
B=hamming(N);
Hamming'
elseifk==3
B=hanning(N);
Hanning'
elseifk==4
B=blackman(N);
Blackman'
end
h=hd.*(B)'
;
%得到FIR数字滤波器
[H,m]=freqz(h,[1],1024,'
whole'
%求其频率响应
mag=abs(H);
%得到幅值
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
%得到相位
i=i+1;
figure(i)
subplot(2,2,1);
n=0:
N-1;
stem(n,h,'
.'
axis([0,N-1,-0.1,0.3]);
holdon;
x=zeros(N);
plot(n,x,'
-'
xlabel('
n'
ylabel('
h(n)'
title('
实际低通滤波器的h(n)'
text((0.3*N),0.27,string);
holdoff;
subplot(2,2,2);
plot(m/pi,db);
axis([0,1,-100,0]);
w/pi'
dB'
衰减特性(dB)'
grid;
subplot(2,2,3);
plot(m,pha);
7;
x=zeros(8);
相频特性'
频率(rad)'
相位(rad)'
axis([0,3.15,-4,4]);
subplot(2,2,4);
plot(m,mag);
频率特性'
频率W(rad)'
幅值'
axis([0,3.15,0,1.5]);
text(0.9,1.2,string);
b=menu('
DoYouwantToContinue?
Yes'
No'
ifb==2
b=0;
end
temp=menu('
CloseAllFigure?
iftemp==1
closeall
%实验中的子函数:
产生理想低通滤波器单位脉冲响应hd(n)
functionhd=ideal(w,N);
alpha=(N-1)/2;
n=[0:
m=n-alpha+eps;
hd=sin(w*m)./(pi*m);
程序运行结果:
运行程序,根据实验内容要求和程序提示选择你要进行的实验参数。
三个实验参数选定后,程序运行输出用所选窗函数设计的实际FIR低通数字滤波器的单位脉冲响应h(n)、幅频衰减特性(20lg|H(ejw)|)、相频特性及幅频特性|H(ejw)|的波形,h(n)和|H(ejw)|图中标出了所选窗函数类型及其长度N值。
对四种窗函数(N=15和N=33)的程序运行结果如图4-2到图4-9所示,由图可以看出用各种窗函数设计的FIR滤波器的阻带最小衰减及过渡带均与教材中一致。
在通带内均为严格相位特性。
图6-2矩形窗(N=15)
图6-3矩形窗(N=33)
图6-4哈明窗(N=15)
图6-5哈明窗(N=33)
图6-6汉宁窗(N=15)
图6-7汉宁窗(N=33)
图6-8布莱克曼窗(N=15)
图6-9布莱克曼窗(N=33)