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('双线性变换法')

 

posted @ 2019-05-21 21:51  Crown-V  阅读(134)  评论(0)    收藏  举报