Êý×ÖÐźŴ¦ÀíʵÑé½²Òå
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