实验6FIR滤波器设计.docx
《实验6FIR滤波器设计.docx》由会员分享,可在线阅读,更多相关《实验6FIR滤波器设计.docx(22页珍藏版)》请在冰豆网上搜索。
实验6FIR滤波器设计
课程编号
实验项目序号
本科学生实验卡和实验报告
信息科学与工程学院
通信工程专业2013级 1301班
课程名称:
数字信号处理
实验项目:
FIR滤波器设计
2015~~2016学年第二学期
学号:
0104_姓名:
___王少丹___专业年级班级:
____通信1301_____
____四合院___实验室组别________实验日期__2016年_6__月___12_日
课程名称
数字信号处理
实验课时
4
实验项目名称
和编号
FIR滤波器设计
同组者姓名
实验目的
学会运用MATLAB产生常用离散时间信号
实验环境
MATLAB
实验内容
和原理
(1)认真复习FIR数字滤波器的基本概念,线性相位FIR滤波器的条件和特点、幅度函数特点、零点位置的基本特点与性质;窗函数设计法的基本概念与方法,各种窗函数的性能和设计步骤,线性相位FIR低通、高通、带通和带阻滤波器的设计方法,频率采样设计法的基本概念和线性相位的实现方法。
(2)掌握几种线性相位的特点,熟悉和掌握矩形窗、三角形窗、汉宁窗、海明窗、布莱克曼窗、凯塞窗设计IIR数字滤波器的方法,熟悉和掌握频率抽样设计法的线性相位的设计方法,并对各种线性相位的频率抽样法的设计给出调整和改进。
(3)熟悉利用MATLAB进行各类FIR数字滤波器的设计方法。
实验步骤
方法
关键代码
a.设线性相位FIR滤波器单位抽样响应分别为
h(n)={-4,1,-1,-2,5,6,5,-2,-1,1,-4}
h(n)={-4,1,-1,-2,5,6,6,5,-2,-1,1,-4}
h(n)={-4,1,-1,-2,5,0,-5,2,1,-1,4}
h(n)={-4,1,-1,-2,5,6,-6,-5,2,1,-1,4}
分别求出滤波器的幅度频率响应H(ω),系统函数H(z)以及零极点分布,并绘制相应的波形和分布图。
Type2:
Type3:
Type4:
b.设计FIR数字低通滤波器,技术指标为:
ωp=0.2π,ωst=0.3π,δ1=0.25dB,δ2=50dB。
(1)通过技术指标,选择一种窗函数进行设计;
(2)求滤波器的单位抽样响应、频率响应,并绘制波形。
(3)选择凯塞窗函数设计该滤波器,并绘制相应的波形图。
c.设计FIR数字带通滤波器,技术指标为:
下阻带边缘:
ωst1=0.2π,δs1=60dB,下通带边缘:
ωp1=0.35π,δp1=1dB;上通带边缘:
ωp2=0.65π,δp1=1dB,上阻带边缘:
ωst2=0.8π,δs2=60dB;
(1)通过技术指标,选择一种窗函数进行设计;
(2)求滤波器的单位抽样响应、频率响应,并绘制波形。
d.设计FIR数字带通滤波器,技术指标为:
下阻带边缘:
ωst1=0.2π,δs1=60dB,下通带边缘:
ωp1=0.4π,δp1=1dB;上通带边缘:
ωp2=0.6π,δp1=1dB,上阻带边缘:
ωst2=0.8π,δs2=60dB;
(1)通过技术指标,选择一种窗函数进行设计;
(2)求滤波器的单位抽样响应、频率响应,并绘制波形。
e.设计FIR数字带通滤波器,技术指标为:
下阻带边缘:
ωst1=0.2π,δs1=20dB,下通带边缘:
ωp1=0.4π,δp1=1dB;上通带边缘:
ωp2=0.6π,δp1=1dB,上阻带边缘:
ωst2=0.8π,δs2=20dB;
(1)通过技术指标,选择一种窗函数进行设计;
(2)求滤波器的单位抽样响应、频率响应,并绘制波形。
f.设计FIR数字高通滤波器,技术指标为:
通带截止频率为ωp=15π/27,阻带截止频率为ωst=11π/27,通带最大衰减为δ1=2.5dB,阻带最小衰减为δ2=55dB。
(1)通过技术指标,选择一种窗函数进行设计;
(2)求滤波器的单位抽样响应、频率响应,并绘制波形。
系统一:
g.设计FIR数字高通滤波器,技术指标为:
通带截止频率为ωp=0.6π,阻带截止频率为ωst=0.4π,通带最大衰减为δ1=0.25dB,阻带最小衰减为δ2=40dB。
(1)通过技术指标,选择一种窗函数进行设计;
(2)求滤波器的单位抽样响应、频率响应,并绘制波形。
h.滤波器的技术指标为:
通带截止频率为ωp=0.6π,阻带截止频率为ωst=0.4π,通带最大衰减为δ1=0.25dB,阻带最小衰减为δ2=40dB。
(1)通过技术指标,选择一种窗函数设计一个具有π/2相移的FIR高通滤波器;
(2)求滤波器的单位抽样响应、频率响应,并绘制波形。
i.设计FIR数字带阻滤波器,其技术指标为:
低端阻带边缘:
ωst1=0.4π,δs1=40dB,低端通带边缘:
ωp1=0.2π,δp1=1dB;高端通带边缘:
ωp2=0.8π,δp1=1dB,高端阻带边缘:
ωst2=0.6π,δs2=40dB;
(1)通过技术指标,选择一种窗函数进行设计;
(2)求滤波器的单位抽样响应、频率响应,并绘制波形。
FIR滤波器的单位抽样响应为h(n)=1/9{
},编制MATLAB程序求系统的频率采样型结构的系数,并画出频率抽样型结构。
m.一个理想差分器的频率响应为:
用长度为21的汉宁窗设计一个数字FIR差分器,并绘制其时域和频率的响应波形。
n.利用汉宁窗设计一个长度为25的数字希尔伯特变换器,并绘制它的时域和频域的响应波形。
p.FIR数字低通滤波器的技术指标为:
ωp=0.2π,ωst=0.3π,δ1=0.25dB,δ2=50dB。
利用频率采样方法设计FIR数字滤波器,并绘制滤波器的单位冲激响应、幅度频率响应的波形。
q.用窗函数法设计一个线性相位的FIR数字低通滤波器,其技术指标为:
ωp=0.2π,ωst=0.4π,δ1=0.25dB,δ2=50dB。
(1)求滤波器的单位抽样响应、频率响应,并绘制波形。
(2)对该滤波器输入一个宽度为10的矩形序列,求滤波器的输出信号,并绘制相应的波形图。
测试记录
分析
结论
理论与实验值相符。
(后附代码)
小结
认真复习FIR数字滤波器的基本概念,线性相位FIR滤波器的条件和特点、幅度函数特点、零点位置的基本特点与性质;窗函数设计法的基本概念与方法,各种窗函数的性能和设计步骤,线性相位FIR低通、高通、带通和带阻滤波器的设计方法,频率采样设计法的基本概念和线性相位的实现方法。
以下由实验教师填写
记事
评议
成绩评定
平时成绩_______实验报告成绩________综合成绩_________
指导教师签名:
代码:
wp=0.2*pi;
ws=0.4*pi;
tr_width=ws-wp;
M=ceil(6.6*pi/tr_width)+1;
n=[0:
1:
M-1];
wc=(ws+wp)/2;
hd=ideal_lp(wc,M);
w_ham=(hamming(M))';
h=hd.*w_ham;
[db,mag,pha,H,w]=freqz_m3(h,[1]);
delta_w=2*pi/1000;
Rp=-(min(db(1:
1:
wp/delta_w+1)));
As=-round(max(db(ws/delta_w+1:
1:
501)));
figure
(1)
subplot(221)
stem(n,hd);title('IdealImpulseRresponse')
axis([0M-1-0.10.3]);xlabel('n');ylabel('hd(n)')
subplot(222)
stem(n,w_ham);title('HammingWindow')
axis([0M-101.1]);xlabel('n');ylabel('w(n)')
subplot(223)
stem(n,h);title('ActualImpuseResponse')
axis([0M-1-0.10.3]);xlabel('n');ylabel('h(n)')
subplot(224)
plot(w/pi,db);title('MagnitudeResponseindb');grid
axis([01-10010]);xlabel('frequencein\piunit');ylabel('decibels')
%solutionofproblem(b)
Rn=stepseq(0,0,9)
n=0:
1:
9
dw=w
(2)-
(1)
w=[-fliplr(w),w(2:
501)]
H=[fliplr(H),H(2:
501)]
xw=Rn*(exp(-j)).^(n'*w)
answ=H.*xw
Rnn=answ*exp(-j).^(w'*n)*dw/(2*pi)
figure
(2)
subplot(221)
stem(n,Rn)
xlabel('n');ylabel('Rn');title('inputrectanglesignalinT-domain')
subplot(222)
stem(w/pi,xw)
xlabel('w/\pi');ylabel('Rw');title('inputrectanglesignalinF-domain')
subplot(223)
plot(w/pi,abs(answ))
xlabel('w/\pi');ylabel('MagnitudeofH(w)');title('outputsignalinF-domainafterfilteration')
subplot(224)
stem(n,abs(Rnn))
xlabel('n');ylabel('Rnn');title('outputsignalinT-domainafterfilteration')
M=25;alpha=(M-1)/2;n=0:
M-1;
hd=(2/pi)*((sin((pi/2)*(n-alpha)).^2)./(n-alpha));hd(alpha+1)=0;
w_han=(hann(M))';h=hd.*w_han;[Hr,w,P,L]=Hr_Type3(h);
subplot(2,2,1);stem(n,hd);title('IdealImpulseResponse')
axis([-1M-1.21.2]);xlabel('n');ylabel('hd(n)');
subplot(2,2,2);stem(n,w_han);title('HannWindow')
axis([-1M01.2]);xlabel('n');ylabel('w(n)')
subplot(2,2,3);stem(n,h);title('ActualImpulseResponse')
axis([-1M-1.21.2]);xlabel('n');ylabel('h(n)')
w=w';Hr=Hr';
w=[-fliplr(w),w(2:
501)];Hr=[-fliplr(Hr),Hr(2:
501)];
subplot(2,2,4);plot(w/pi,Hr);title('AmplitudeResponse');grid;
xlabel('frequencyinpiunits');ylabel('Hr');axis([-11-1.11.1]);
M=20;alpha=(M-1)/2;l=0:
M-1;wl=(2*pi/M)*l;
Hrs=[1,1,1,zeros(1,15),1,1];%IdealAmpRessampled
Hdr=[1,1,0,0];wdl=[0,0.25,0.25,1];%IdealAmpResforplotting
k1=0:
floor((M-1)/2);k2=floor((M-1)/2)+1:
M-1;
angH=[-alpha*(2*pi)/M*k1,alpha*(2*pi)/M*(M-k2)];
H=Hrs.*exp(j*angH);h=real(ifft(H,M));
[db,mag,pha,grd,w]=freqz_m(h,1);[Hr,ww,a,L]=Hr_Type2(h);
subplot(2,2,1);plot(wl(1:
11)/pi,Hrs(1:
11),'o',wdl,Hdr);
axis([0,1,-0.1,1.1]);title('FrequencySamples:
M=20')
xlabel('frequencyinpiunits');ylabel('Hr(k)');
subplot(2,2,2);stem(l,h);axis([-1,M,-0.1,0.3])
title('ImpulseResponse');xlabel('n');ylabel('h(n)');
subplot(2,2,3);plot(ww/pi,Hr,wl(1:
11)/pi,Hrs(1:
11),'o');
axis([0,1,-0.2,1.2]);title('AmplitudeResponse')
xlabel('frequencyinpiunits');ylabel('Hr(w)')
subplot(2,2,4);plot(w/pi,db);axis([0,1,-60,10]);grid
title('MagnitudeResponse');xlabel('frequencyinpiunits');
ylabel('Decibels');
Wpl=0.2*pi;
Wph=0.8*pi;
Wsl=0.4*pi;
Wsh=0.6*pi;
tr_width=min((Wsl-Wpl),(Wph-Wsh));
M=ceil(6.2*pi/tr_width)
n=0:
1:
M-1;
Wcl=(Wsl+Wpl)/2;
Wch=(Wsh+Wph)/2;
hd=ideal_bs(Wcl,Wch,M);
w_ham=(hanning(M))';
h=hd.*w_ham;
[db,mag,pha,w]=freqz_m2(h,[1]);
delta_w=2*pi/1000;
Ap=-(min(db(1:
1:
Wpl/delta_w+1)))
As=-round(max(db(Wsl/delta_w+1:
1:
Wsh/delta_w+1)))
subplot(221)
stem(n,hd);title('IdealImpulseRresponse')
axis([0M-1-0.10.7]);xlabel('n');ylabel('hd(n)')
subplot(222)
stem(n,w_ham);title('HammingWindow')
axis([0M-101.1]);xlabel('n');ylabel('w(n)')
subplot(223)
stem(n,h);title('ActualImpuseResponse')
axis([0M-1-0.10.7]);xlabel('n');ylabel('h(n)')
subplot(224)
plot(w/pi,db);title('MagnitudeResponseindb');grid
axis([01-10010]);xlabel('frequencein\piunit');ylabel('decibels');
clearall
figure
Wpl=0.2*pi;
Wph=0.8*pi;
Wsl=0.4*pi;
Wsh=0.6*pi;
tr_width=min((Wsl-Wpl),(Wph-Wsh));
M=ceil(6.2*pi/tr_width)
n=0:
1:
M-1;
Wcl=(Wsl+Wpl)/2;
Wch=(Wsh+Wph)/2;
hd=ideal_bs(Wcl,Wch,M);
w_ham=(hanning(M))';
h=hd.*w_ham;
[db,mag,pha,w]=freqz_m2(h,[1]);
delta_w=2*pi/1000;
Ap=-(min(db(1:
1:
Wpl/delta_w+1)))
As=-round(max(db(Wsl/delta_w+1:
1:
Wsh/delta_w+1)))
subplot(221)
stem(n,hd);title('IdealImpulseRresponse')
axis([0M-1-0.10.7]);xlabel('n');ylabel('hd(n)')
subplot(222)
stem(n,w_ham);title('HammingWindow')
axis([0M-101.1]);xlabel('n');ylabel('w(n)')
subplot(223)
stem(n,h);title('ActualImpuseResponse')
axis([0M-1-0.10.7]);xlabel('n');ylabel('h(n)')
subplot(224)
plot(w/pi,db);title('MagnitudeResponseindb');grid
axis([01-10010]);xlabel('frequencein\piunit');ylabel('decibels');
figure
ws1=0.2*pi;
wp1=0.35*pi;
ws2=0.8*pi;
wp2=0.65*pi;
Ap=60;
Rp=1;
tr_width=min((wp1-ws1),(ws2-wp2));
M=ceil(11*pi/tr_width);
n=[0:
1:
M-1];
wc1=(ws1+wp1)/2;
wc2=(wp2+ws2)/2;
hd=ideal_lp(wc2,M)-ideal_lp(wc1,M);
w_bla=(blackman(M))';
h=hd.*w_bla;
[H,W]=freqz(h,1);
subplot(2,2,1);stem(n,hd);title('ÀíÏëÂö³å³éÑù');
subplot(2,2,2);stem(n,w_bla);title('²¼À³¿ËÂü´°');
subplot(2,2,3);stem(n,h);title('ʵ¼ÊÂö³å³éÑù');
subplot(2,2,4);plot(W/pi,20*log10(abs(H)));title('·ù¶ÈÏìÓ¦£¨db£©');
clearall
figure
ws1=0.2*pi;
wp1=0.4*pi;
ws2=0.8*pi;
wp2=0.6*pi;
Ap=60;
Rp=1;
tr_width=min((wp1-ws1),(ws2-wp2));
M=ceil(11*pi/tr_width);
n=[0:
1:
M-1];
wc1=(ws1+wp1)/2;
wc2=(wp2+ws2)/2;
hd=ideal_lp(wc2,M)-ideal_lp(wc1,M);
w_bla=(hamming(M))';
h=hd.*w_bla;
[H,W]=freqz(h,1);
subplot(2,2,1);stem(n,hd);title('ÀíÏëÂö³å³éÑù');
subplot(2,2,2);stem(n,w_bla);title('º£Ã÷´°');
subplot(2,2,3);stem(n,h);title('ʵ¼ÊÂö³å³éÑù');
subplot(2,2,4);plot(W/pi,20*log10(abs(H)));title('·ù¶ÈÏìÓ¦£¨db£©');
clearall
figure
ws1=0.2*pi;
wp1=0.4*pi;
ws2=0.8*pi;
wp2=0.6*pi;
Ap=20;
Rp=1;
tr_width=min((wp1-ws1),(ws2-wp2));
M=ceil(11*pi/tr_width);
n=[0:
1:
M-1];
wc1=(ws1+wp1)/2;
wc2=(wp2+ws2)/2;
hd=ideal_lp(wc2,M)-ideal_lp(wc1,M);
w_bla=(boxcar(M))';
h=hd.*w_bla;
[H,W]=freqz(h,1);
subplot(2,2,1);stem(n,hd);title('ÀíÏëÂö³å³éÑù');
subplot(2,2,2);stem(n,w_bla);title('¾ØÐδ°');
subplot(2,2,3);stem(n,h);title('ʵ¼ÊÂö³å³éÑù');
subplot(2,2,4);plot(W/pi,20*log10(abs(H)));title('·ù¶ÈÏìÓ¦£¨db£©');
clearall
figure
As=55;
ws=11*pi/27;
wp=15*pi/27;
tr_width=wp-ws;%¼ÆËã¹ý¶É´ø
M=ceil((As-7.95)*2*pi/(14.36*tr_width)+1)+1;%°´¿Ôó´°¼ÆËãÂ˲¨Æ÷µÄ³¤¶È
disp(['Â˲¨Æ÷µÄ³¤¶È',num2str(M)]);
beta=0.1102*(As-8.7);%¼ÆËã¿Ôó´°µÄbetaÖµ
n=[0:
1:
M-1];
disp(['ÏßÐÔÏàλÂ˲¨Æ÷',num2str(beta)]);
w_kai=(kaiser(M,beta))';%Çó¿Ôó´°º¯Êý
wc=(ws+wp)/2;
hd=ideal_lp(pi,M)-ideal_lp(wc,M);%ÇóÀíÏëÂö³åÏìÓ¦
h=hd.*w_kai;
[db,mag,pha,grd,w]=freqz_m(h,[1]);
delta_w=2*pi/1000;
Rp=-(min(db(wp/delta_w+1:
1:
501)));
disp(['ʵ¼Êͨ´ø²¨¶¯Îª',num2str(Rp)]);
As=-round(max(db(1:
1:
ws/delta_w+1)));
disp(['×îС×è´øË¥¼õΪ?
',num2str(As)]);
subplot(2,2,1);
stem(n,hd);
title('ÀíÏëÂö³åÏìÓ¦');
axis([0M-1-0