matlab 【IIR】
1 wp=0.25*pi; 2 ws=0.4*pi; 3 Fs=2000; 4 rp=1; 5 rs=15; 6 wp1=wp*Fs; 7 ws1=ws*Fs; 8 [n1,wn1]=buttord(wp1,ws1,rp,rs,'s'); 9 [B1,A1]=butter(n1,wn1,'s'); 10 [bz1,az1]=impinvar(B1,A1,Fs); 11 wp2=2*Fs*tan(wp/2); 12 ws2=2*Fs*tan(ws/2); 13 [n2,wn2]=buttord(wp2,ws2,rp,rs,'s'); 14 [B2,A2]=butter(n2,wn2,'s'); 15 [bz2,az2]=bilinear(B2,A2,Fs); 16 [h1,w1]=freqz(bz1,az1,256,Fs); 17 [h2,w2]=freqz(bz2,az2,256,Fs); 18 figure(1) 19 plot(w1,abs(h1),'-',w2,abs(h2),'-'); 20 grid on 21 xlabel('f/Hz'); 22 ylabel('|H(ejw)|'); 23 title('-.冲击响应不变-.双线性变换') 24 25 clear; 26 Fs=1000; 27 rp=1; 28 rs=25; 29 wp1=2*pi*200; 30 ws1=2*pi*300; 31 [n1,wn1]=buttord(wp1,ws1,rp,rs,'s'); 32 [B1,A1]=butter(n1,wn1,'s'); 33 [bz1,az1]=impinvar(B1,A1,Fs); 34 [h1,w1]=freqz(bz1,az1,256,Fs); 35 figure(2) 36 plot(w1,abs(h1),'-'); 37 grid on 38 xlabel('f/Hz'); 39 ylabel('|H(ejw)|'); 40 title('-.冲击响应不变') 41 42 clear; 43 wp=0.25*pi; 44 ws=0.4*pi; 45 Fs=1; 46 rp=1; 47 rs=15; 48 wp1=wp*Fs; 49 ws1=ws*Fs; 50 [n1,wn1]=buttord(wp1,ws1,rp,rs,'s'); 51 [B1,A1]=butter(n1,wn1,'s'); 52 [bz1,az1]=impinvar(B1,A1,Fs); 53 xn=[-4 -2 0 -5 -6 -4 -2 -4 -5 -6 -4 -4 -6 -6 -2 6 12 8 0 -16 -37 -60 -84 -91 -66 -32 -4 -2 -4 7 11 11 10 6 6 6 4 0 0 0 -2 -4 0 0 -2 -2 0 0 -2 -2 -2 0]; 54 yn=filter(bz1,az1,xn); 55 figure(3) 56 subplot(2,2,1); 57 plot(xn); 58 title('原信号'); 59 subplot(2,2,2); 60 plot(yn); 61 title('响应'); 62 [h1,w1]=freqz(bz1,az1,256,Fs); 63 subplot(2,2,3); 64 plot(w1,abs(h1)); 65 title('幅频响应'); 66 subplot(2,2,4); 67 plot(w1,angle(h1)); 68 title('相频响应'); 69 70 clear; 71 Fs=2000; 72 rp=1; 73 rs=15; 74 wp1=2*pi*250; 75 ws1=2*pi*150; 76 [n1,wn1]=buttord(wp1,ws1,rp,rs,'s'); 77 [B1,A1]=butter(n1,wn1,'high','s'); 78 [bz1,az1]=bilinear(B1,A1,Fs); 79 [h1,w1]=freqz(bz1,az1,256,Fs); 80 figure(4) 81 plot(w1,abs(h1),'-'); 82 grid on 83 xlabel('f/Hz'); 84 ylabel('|H(ejw)|'); 85 title('双线性变换法')
    M54

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号