配色: 字号:
MATLAB滤波器设计
2012-06-21 | 阅:  转:  |  分享 
  
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''])





献花(0)
+1
(本文系依米荷阳首藏)