MATLAB作业
第一题
已知:h(n)={-4,1,-1,-2,5,5,-2,-1,1,-4},参照实验内容5的程序或自编程序确定并绘出第二种线性相位滤波器的单位冲激响应h(n)和振幅响应Hr(ω).
已知:h(n)={-4,1,-1,-2,5,0,-5,2,1,-1,4},参照实验内容5的程序或自编程序确定第三种线性相位滤波器的单位冲激响应h(n)和振幅响应Hr(ω).
h=[-4,1,-1,-2,5,0,-5,2,1,-1,4];
N=length(h);n=0:N-1;
[Hr,w,c,L]=Hr_Type3(h);
amax=max(c)+1;;amin=min(c)-1;
subplot(2,2,1);stem(n,h);
axis([-12L+1aminamax])
xlabel(''n'');ylabel(''h(n)'');
title(''ImpulseResponse'')
subplot(223);stem(0:L,c);
axis([-12L+1aminamax])
xlabel(''n'');ylabel(''c(n)'');
title(''a(n)coefficients'')
subplot(222);
plot(w/pi,Hr);grid
xlabel(''Frequencyinpiunits'');ylabel(''Hr'')
title(''Type-1AmplitudeResponse'')
subplot(224);zplane(h,1);
已知:h(n)={-4,1,-1,-2,5,-5,2,1,-1,4},参照实验内容5的程序或自编程序确定第四种线性相位滤波器的单位冲激响应h(n)和振幅响应Hr(ω).
h=[-4,1,-1,-2,5,-5,2,1,-1,4];
N=length(h);n=0:N-1;
[Hr,w,d,L]=Hr_Type4(h);
amax=max(d)+1;;amin=min(d)-1;
subplot(2,2,1);stem(n,h);
axis([-12L+1aminamax])
xlabel(''n'');ylabel(''h(n)'');
title(''ImpulseResponse'')
subplot(223);stem(1:L,d);
axis([-12L+1aminamax])
xlabel(''n'');ylabel(''d(n)'');
title(''a(n)coefficients'')
subplot(222);
plot(w/pi,Hr);grid
xlabel(''Frequencyinpiunits'');ylabel(''Hr'')
title(''Type-1AmplitudeResponse'')
subplot(224);zplane(h,1);
第二题利用窗函数设计FIR滤波器2:参照实验内容7的程序或自编程序来实现
设计具有指标ωp=0.4π,Rp=0.25dB,ωs=0.2π,As=50dB的高通数字FIR滤波器。选择合适的窗函数,确定并画出滤波器的冲激响应和频率响应。
%Highpassfilterdesign-Hammingwindow
wp=0.4pi;ws=0.2pi;
tr_width=wp-ws;
M=ceil(6.6pi/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,grd,w]=freqz_m(h,[1]);
delta_w=2pi/1000;
Rp=-(min(db(1:1:wp/delta_w+1)))%PassbandRipple
As=-round(max(db(ws/delta_w+1:1:501)))%MinStopbandattenuation
%plots
subplot(1,1,1)
subplot(2,2,1);stem(n,hd);title(''IdealImpulseResponse'')
axis([0M-1-0.10.3]);xlabel(''n'');ylabel(''hd(n)'')
subplot(2,2,2);stem(n,w_ham);title(''HammingWindow'')
axis([0M-101.1]);xlabel(''n'');ylabel(''w(n)'')
subplot(2,2,3);stem(n,h);title(''ActualImpulseResponse'')
axis([0M-1-0.10.3]);xlabel(''n'');ylabel(''h(n)'')
subplot(2,2,4);plot(w/pi,db);title(''MagnitudeResponseindB'');grid
axis([01-10010]);xlabel(''frequencyinpiunits'');ylabel(''Decibels'')
set(gca,''XTickMode'',''manual'',''XTick'',[0,0.2,0.3,1])
set(gca,''YTickMode'',''manual'',''YTick'',[-50,0])
set(gca,''YTickLabelMode'',''manual'',''YTickLabels'',[''50'';''0''])
设计具有指标ωs1=0.35π,Rp=1dB,ωs2=0.65π,Rp=1dB;ωp1=0.2π,As=60dB,ωp2=0.8π,As=60dB的数字带阻FIR滤波器。选择合适的窗函数,确定并画出滤波器的冲激响应和频率响应。
%Bandstopfilterdesign-Blackmanwindow
ws1=0.35pi;wp1=0.2pi;wp2=0.8pi;ws2=0.65pi;As=60;
tr_width=min((ws1-wp1),(wp2-ws2))
M=ceil(11pi/tr_width)+1%;M=68
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;
[db,mag,pha,grd,w]=freqz_m(h,[1]);
delta_w=2pi/1000;
Rp=-min(db(wp1/delta_w+1:1:wp2/delta_w))%Actua;PassbandRipple
As=-round(max(db(ws2/delta_w+1:1:501)))%MinStopbandAttenuation
%plots
subplot(1,1,1);
subplot(2,2,1);stem(n,hd);title(''IdealImpulseResponse'')
axis([0M-1-0.40.5]);xlabel(''n'');ylabel(''hd(n)'')
subplot(2,2,2);stem(n,w_bla);title(''BlackmanWindow'')
axis([0M-101.1]);xlabel(''n'');ylabel(''w(n)'')
subplot(2,2,3);stem(n,h);title(''ActualImpulseResponse'')
axis([0M-1-0.40.5]);xlabel(''n'');ylabel(''h(n)'')
subplot(2,2,4);plot(w/pi,db);%set(gca,''FontName'',''cmr12'');
title(''MagnitudeResponseindB'');grid;
xlabel(''frequencyinpiunits'');ylabel(''Decibels'')
axis([01-15010]);
set(gca,''XTickMode'',''manual'',''XTick'',[0,0.2,0.35,0.65,0.8,1])
set(gca,''YTickMode'',''manual'',''YTick'',[-60,0])
set(gca,''YTickLabelMode'',''manual'',''YTickLabels'',[''60'';''0''];
第三题.利用频率采样法设计FIR滤波器2
频率采样技术应用(最优法):参照实验内容9的程序或自编程序来实现
1)设计低通滤波器:
wp=0.3pi,ws=0.4pi,Rp=0.25dB,As=50dB
T1=0.5925,T2=0.1099
M=60;alpha=(M-1)/2;l=0:M-1;wl=(2pi/M)l;
Hrs=[ones(1,7),0.5925,0.11,zeros(1,43),0.11,0.5925,ones(1,6)];
Hdr=[1,1,0,0];wdl=[0,0.3,0.4,1];
k1=0:floor((M-1)/2);k2=floor((M-1)/2)+1:M-1;
angH=[-alpha(2pi)/Mk1,alpha(2pi)/M(M-k2)];
H=Hrs.exp(jangH);
h=real(ifft(H,M));
[db,mag,pha,grd,w]=freqz_m(h,1);
[Hr,ww,a,L]=Hr_Type2(h);
subplot(1,1,1)
subplot(2,2,1);plot(wl(1:31)/pi,Hrs(1:31),''o'',wdl,Hdr);
axis([0,1,-0.1,1.1]);title(''低通:M=60,T1=0.59,T2=0.109'')
xlabel('''');ylabel(''Hr(k)'')
set(gca,''XTickMode'',''manual'',''XTick'',[0,0.3,0.4,1])
set(gca,''YTickMode'',''manual'',''YTick'',[0,0.109,0.59,1]);grid
subplot(2,2,2);stem(l,h);axis([-1,M,-0.1,0.3])
title(''脉冲响应'');ylabel(''h(n)'');text(M+1,-0.1,''n'')
subplot(2,2,3);plot(ww/pi,Hr,wl(1:31)/pi,Hrs(1:31),''o'');
axis([0,1,-0.1,1.1]);title(''振幅响应'')
xlabel(''频率(单位:pi)'');ylabel(''Hr(w)'')
set(gca,''XTickMode'',''manual'',''XTick'',[0,0.2,0.3,1])
set(gca,''YTickMode'',''manual'',''YTick'',[0,0.109,0.59,1]);grid
subplot(2,2,4);plot(w/pi,db);axis([0,1,-100,10]);grid
title(''幅度响应'');xlabel(''频率(单位:pi)'');
ylabel(''分贝数'');
set(gca,''XTickMode'',''Manual'',''XTick'',[0;0.2;0.3;1]);
set(gca,''YTickMode'',''Manual'',''YTick'',[-63;0]);
set(gca,''YTickLabelMode'',''manual'',''YTickLabels'',[''63'';''0''])
2)设计高通滤波器:
wp=0.4pi,ws=0.3pi,Rp=0.25dB,As=50dB
T1=0.5925,T2=0.1099
M=33;alpha=(M-1)/2;l=0:M-1;wl=(2pi/M)l;
T1=0.1095;T2=0.598;
Hrs=[zeros(1,11),T1,T2,ones(1,8),T2,T1,zeros(1,10)];
Hdr=[0,0,1,1];wdl=[0,0.3,0.4,1];
k1=0:floor((M-1)/2);k2=floor((M-1)/2)+1:M-1;
angH=[-alpha(2pi)/Mk1,alpha(2pi)/M(M-k2)];
H=Hrs.exp(jangH);
h=real(ifft(H,M));
[db,mag,pha,grd,w]=freqz_m(h,1);
[Hr,ww,a,L]=Hr_Type1(h);
subplot(1,1,1)
subplot(2,2,1);plot(wl(1:17)/pi,Hrs(1:17),''o'',wdl,Hdr);
axis([0,1,-0.1,1.1]);title(''高通:M=33,T1=0.1095,T2=0.598'')
xlabel('''');ylabel(''Hr(k)'')
set(gca,''XTickMode'',''manual'',''XTick'',[0;.3;.4;1])
set(gca,''XTickLabelMode'',''manual'',''XTickLabels'',[''0'';''.6'';''.8'';''1''])
set(gca,''YTickMode'',''manual'',''YTick'',[0,0.109,0.59,1]);grid
subplot(2,2,2);stem(l,h);axis([-1,M,-0.4,0.4])
title(''脉冲响应'');ylabel(''h(n)'');text(M+1,-0.4,''n'')
subplot(2,2,3);plot(ww/pi,Hr,wl(1:17)/pi,Hrs(1:17),''o'');
axis([0,1,-0.1,1.1]);title(''振幅响应'')
xlabel(''频率(单位:pi)'');ylabel(''Hr(w)'')
set(gca,''XTickMode'',''manual'',''XTick'',[0;.3;.4;1])
set(gca,''XTickLabelMode'',''manual'',''XTickLabels'',[''0'';''.6'';''.8'';''1''])
set(gca,''YTickMode'',''manual'',''YTick'',[0,0.109,0.59,1]);grid
subplot(2,2,4);plot(w/pi,db);axis([0,1,-100,10]);grid
title(''幅度响应'');xlabel(''频率(单位:pi)'');
ylabel(''分贝数'');
set(gca,''XTickMode'',''manual'',''XTick'',[0;.3;.4;1])
set(gca,''XTickLabelMode'',''manual'',''XTickLabels'',[''0'';''.3'';''.4'';''1''])
set(gca,''YTickMode'',''Manual'',''YTick'',[-50;0]);
set(gca,''YTickLabelMode'',''manual'',''YTickLabels'',[''50'';''0''])
3)设计带通滤波器:
ws1=0.3pi,wp1=0.35pi,wp2=0.40pi,
ws2=0.45pi,Rp=1dB,As=60dB
T2=0.59417456,T1=0.109021
M=40;alpha=(M-1)/2;l=0:M-1;wl=(2pi/M)l;
T1=0.109021;T2=0.59417456;
Hrs=[zeros(1,5),T1,T2,ones(1,7),T2,T1,zeros(1,9),T1,T2,ones(1,7),T2,T1,zeros(1,4)];
Hdr=[0,0,1,1,0,0];wdl=[0,0.3,0.35,0.4,0.45,1];
k1=0:floor((M-1)/2);k2=floor((M-1)/2)+1:M-1;
angH=[-alpha(2pi)/Mk1,alpha(2pi)/M(M-k2)];
H=Hrs.exp(jangH);
h=real(ifft(H,M));
[db,mag,pha,grd,w]=freqz_m(h,1);
[Hr,ww,a,L]=Hr_Type2(h);
subplot(1,1,1)
subplot(2,2,1);plot(wl(1:21)/pi,Hrs(1:21),''o'',wdl,Hdr);
axis([0,1,-0.1,1.1]);title(''带通:M=40,T1=0.5941,T2=0.109'')
xlabel('''');ylabel(''Hr(k)'')
set(gca,''XTickMode'',''manual'',''XTick'',[0,0.3,0.35,0.4,0.45,1])
set(gca,''YTickMode'',''manual'',''YTick'',[0,0.109,0.59,1]);grid
subplot(2,2,2);stem(l,h);axis([-1,M,-0.4,0.4])
title(''脉冲响应'');ylabel(''h(n)'');text(M+1,-0.4,''n'')
subplot(2,2,3);plot(ww/pi,Hr,wl(1:21)/pi,Hrs(1:21),''o'');
axis([0,1,-0.1,1.1]);title(''振幅响应'')
xlabel(''频率(单位:pi)'');ylabel(''Hr(w)'')
set(gca,''XTickMode'',''manual'',''XTick'',[0,0.3,0.35,0.4,0.45,1])
set(gca,''YTickMode'',''manual'',''YTick'',[0,0.109,0.59,1]);grid
subplot(2,2,4);plot(w/pi,db);axis([0,1,-100,10]);grid
title(''幅度响应'');xlabel(''频率(单位:pi)'');
ylabel(''Decibels'');
set(gca,''XTickMode'',''Manual'',''XTick'',[0,0.3,0.35,0.40,0.45,1]);
set(gca,''YTickMode'',''Manual'',''YTick'',[-60;0]);
set(gca,''YTickLabelMode'',''manual'',''YTickLabels'',[''60'';''0''])
|
|