Êý×ÖÐźŴ¦ÀíʵÑé½²Ò壨ÐÞ¶©°æ£© ÏÂÔØ±¾ÎÄ

Êý×ÖÐźŴ¦ÀíʵÑé½²Òå

set(gca,'YTickMode','manual','YTick',[-50,0])

set(gca,'YTickLabelMode','manual','YTickLabel',['50';' 0']) set(gcf,'color','w'); % ÖÃͼÐα³¾°É«Îª°×

4¡¢ÔÚMATLAB ÖвúÉú´°º¯Êý £¨1£©¾ØÐδ°£¨Rectangle Window£©

µ÷Óøñʽ£ºw=boxcar(n)£¬¸ù¾Ý³¤¶Èn ²úÉúÒ»¸ö¾ØÐδ°w¡£ £¨2£©Èý½Ç´°£¨Triangular Window£©

µ÷Óøñʽ£ºw=triang(n) £¬¸ù¾Ý³¤¶Èn ²úÉúÒ»¸öÈý½Ç´°w¡£ £¨3£©ººÄþ´°£¨Hanning Window£©

µ÷Óøñʽ£ºw=hanning(n) £¬¸ù¾Ý³¤¶Èn ²úÉúÒ»¸öººÄþ´°w¡£ £¨4£©º£Ã÷´°£¨Hamming Window£©

µ÷Óøñʽ£ºw=hamming(n) £¬¸ù¾Ý³¤¶Èn ²úÉúÒ»¸öº£Ã÷´°w¡£ £¨5£©²¼À­¿ËÂü´°£¨Blackman Window£©

µ÷Óøñʽ£ºw=blackman(n) £¬¸ù¾Ý³¤¶Èn ²úÉúÒ»¸ö²¼À­¿ËÂü´°w¡£ £¨6£©âýÈö´°£¨Kaiser Window£©

µ÷Óøñʽ£ºw=kaiser(n,beta) £¬¸ù¾Ý³¤¶Èn ºÍÓ°Ïì´°º¯ÊýÅÔ°êµÄ¦Â²ÎÊý²úÉúÒ»¸öâýÈö´°w¡£

5¡¢»ùÓÚ´°º¯ÊýµÄFIR Â˲¨Æ÷Éè¼Æ ÀûÓÃMATLAB ÌṩµÄº¯Êýfirl À´ÊµÏÖ¡£

µ÷Óøñʽ£ºfirl (n,Wn,¡¯ftype¡¯,Window)£¬n Ϊ½×Êý¡¢Wn ÊǽØÖ¹ÆµÂÊ£¨Èç¹ûÊäÈëÊÇÐÎÈç[W1 W2]µÄʸÁ¿Ê±£¬±¾º¯Êý½«Éè¼Æ´øÍ¨Â˲¨Æ÷£¬Æäͨ´øÎªW1<¦Ø

34

Êý×ÖÐźŴ¦ÀíʵÑé½²Òå

ÆäÀíÏë·ùÆµÌØÐÔÂú×ãHd(ej?)???1,0???0.4?

?0,elseWindow=boxcar(8); %³¤¶ÈΪ8 µÄ¾ØÐδ°Window b=fir1(7,0.4,Window); freqz(b,1)

Window=blackman(8); %³¤¶ÈΪ8 µÄ²¼À­¿ËÂü´°Window b=fir1(7,0.4,Window); freqz(b,1)

[Àý]Éè¼ÆÏßÐÔÏàλ´øÍ¨Â˲¨Æ÷£¬Éè¼ÆÖ¸±ê£º³¤¶ÈN=16£¬ÉÏϱߴø½ØÖ¹ÆµÂÊ·Ö±ðΪ W1= 0.3*pi;w2=0.5*pi; Window=blackman(16);

b=fir1(15,[0.3 0.5],Window); freqz(b,1)

[Àý]Éè¼ÆÖ¸±êΪ£º¦Øp=0.2¦Ð Rp=0.25dB ¦Øa=0.3¦Ð As=50dB µÄµÍͨÊý×ÖFIR Â˲¨Æ÷¡£ wp=0.2*pi; ws=0.3*pi; wc=(ws+wp)/2; tr_width=ws-wp; M=ceil(6.6*pi/tr_width)+1; N=[0:1:M-1]; alpha=(M-1)/2; n=[0:1:(M-1)]; %n=[0,(M-1)]; m=n-alpha + eps;

hd=sin(wc*m)./(pi*m); w_ham=(boxcar(M))'; h=hd.*w_ham;

[H,w]=freqz(h,[1],1000,'whole'); H=(H(1:501))'; w=(w(1:501))'; mag=abs(H);

db=20*log10((mag+eps)/max(mag)); pha=angle(H);

grd=grpdelay(h,[1],w); delta_w=2*pi/1000;

Rp=-(min(db(1:1:wp/delta_w+1)));

As=-round(max(db(ws/delta_w+1:1:501))); Close all;

subplot(2,2,1);stem(hd);title('ÀíÏë³å»÷ÏìÓ¦') axis([0 M-1 -0.1 0.3]);ylabel('hd[n]');

subplot(2,2,2);stem(w_ham);title('ººÃ÷´°'); axis([0 M-1 0 1.1]);ylabel('w[n]');

subplot(2,2,3);stem(h);title('ʵ¼Ê³å»÷ÏìÓ¦'); axis([0 M-1 -0.1 0.3]);ylabel('h[n]');

subplot(2,2,4);plot(w/pi,db); title('Ë¥¼õ·ù¶È'); axis([0 1 -100 10]);ylabel('Decibles');

35

Êý×ÖÐźŴ¦ÀíʵÑé½²Òå

¸½Â¼Ò» Â˲¨Æ÷Éè¼ÆÊ¾Àý

Ò»¡¢MatlabÉè¼ÆIIR»ù±¾Ê¾Àý

£¨1£©Ö±½ÓÉè¼ÆÊý×ÖÂ˲¨Æ÷

µÍͨ£¬²ÉÑùƵÂÊΪ1Hz£¬Í¨´øÁÙ½çÆµÂÊfp =0.2Hz£¬Í¨´øÄÚË¥¼õСÓÚ1dB£¨¦Áp=1£©£»×è´øÁÙ½çÆµÂÊfs=0.3Hz£¬×è´øÄÚË¥¼õ´óÓÚ25dB£¨¦Ás=25£©¡£Éè¼ÆÒ»¸öÊý×ÖÂ˲¨Æ÷Âú×ãÒÔÉϲÎÊý¡£ % MatlabʹÓùéÒ»»¯µÄƵÂʲÎÊý£¨ÁÙ½çÆµÂʳýÒÔ²ÉÑùƵÂʵÄ1/2£©¡£

%ÕâÑùÁÙ½çÆµÂʲÎÊýµÄȡֵ·¶Î§ÔÚ0ºÍ1Ö®¼ä£¬1´ú±íFs/2£¨ÓÃ½ÇÆµÂʱíʾµÄʱºò¶ÔÓ¦¦Ð£© FS=1

[n,Wn]=buttord(0.2/(FS/2),0.3/( FS /2),1,25); [b,a]=butter(n,Wn); freqz(b,a,512, FS);

£¨2£©Âö³åÏàÓ¦²»±ä·¨

µÍͨ£¬²ÉÑùƵÂÊΪ1Hz£¬Í¨´øÁÙ½çÆµÂÊfp =0.2Hz£¬Í¨´øÄÚË¥¼õСÓÚ1dB£¨¦Áp=1£©£»×è´øÁÙ½çÆµÂÊfs=0.3Hz£¬×è´øÄÚË¥¼õ´óÓÚ25dB£¨¦Ás=25£©¡£Éè¼ÆÒ»¸öÊý×ÖÂ˲¨Æ÷Âú×ãÒÔÉϲÎÊý¡£ FS=1

[n,Wn]=buttord(0.2*2*pi,0.3*2*pi,1,25,'s'); %ÁÙ½çÆµÂʲÉÓÃ½ÇÆµÂʱíʾ [b,a]=butter(n,Wn,'s'); %freqs(b,a) %Éè¼ÆÄ£ÄâµÄ

[bz,az]=impinvar(b,a,FS); %Ó³ÉäΪÊý×ÖµÄ freqz(bz,az,512,FS)

36

Êý×ÖÐźŴ¦ÀíʵÑé½²Òå

£¨3£©Ë«ÏßÐԱ任

µÍͨ£¬²ÉÑùƵÂÊΪ1Hz£¬Í¨´øÁÙ½çÆµÂÊfp =0.2Hz£¬Í¨´øÄÚË¥¼õСÓÚ1dB£¨¦Áp=1£©£»×è´øÁÙ½çÆµÂÊfs=0.3Hz£¬×è´øÄÚË¥¼õ´óÓÚ25dB£¨¦Ás=25£©¡£Éè¼ÆÒ»¸öÊý×ÖÂ˲¨Æ÷Âú×ãÒÔÉϲÎÊý¡£ FS=1

%ͨ´ø¡¢×è´ø½ØÖ¹ÆµÂÊ Fl=0.2;Fh=0.3; %ƵÂÊÔ¤»û

wp=(Fl/FS)*2*pi; %ÁÙ½çÆµÂʲÉÓÃ½ÇÆµÂʱíʾ ws=(Fh/FS)*2*pi; %ÁÙ½çÆµÂʲÉÓÃ½ÇÆµÂʱíʾ OmegaP=2*FS*tan(wp/2); OmegaS=2*FS*tan(ws/2);

[n,Wn]=buttord(OmegaP,OmegaS,1,25,'s'); [b,a]=butter(n,Wn,'s'); %freqs(b,a) %Éè¼ÆÄ£ÄâµÄ

[bz,az]=bilinear(b,a,FS); %Ó³ÉäΪÊý×ÖµÄ freqz(bz,az,512,FS,'whole')

37