ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/10/15 13:58:41ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£
0.0940?0.3759z?1?0.5639z?2?0.3759z?1?0.0940H(z)? ?2?41?0.4860z?0.0177z
3¡¢ÒÑÖªËĽ׹éÒ»»¯µÍͨ°ÍÌØÎÖ˹ģÄâÂ˲¨Æ÷ϵͳº¯ÊýΪHa(s)?1£¬±àдMATLAB³Ì
s4?5s3?2s2?2s?1ÐòʵÏÖ´ÓHa?s?Éè¼Æ3dB½ØÖ¹ÆµÂÊΪwc??4µÄËĽ׸ßͨ°ÍÌØÎÖ˹Êý×ÖÂ˲¨Æ÷¡£
Éè¼Æ³ÌÐòÈçÏ£º
clear;
T=1; fs=1/T; N=4; wc=pi/2;
omegach=2*tan(wc/2)/T;%Ä£ÄâÂ˲¨Æ÷µÄ½ØÖ¹ÆµÂÊ M=1;
N=[1,2.6131,3.4142,2.6131,1];
[h,w]=freqs(M,N,512); %Ä£ÄâÂ˲¨Æ÷µÄ·ùƵÏìÓ¦ subplot(2,1,1);
plot(w,20*log10(abs(h))); axis([0,10,-90,0]),grid on;
xlabel('Hz');ylabel('·ù¶È'); title('¹éÒ»»¯Ä£ÄâµÍͨÂ˲¨Æ÷'); [Ms,Ns]=lp2lp(M,N,omegach); %¶ÔµÍͨÂ˲¨Æ÷½øÐÐÆµÂʱ任 [hs,ws]=freqs(Ms,Ns,512); %Ä£ÄâÂ˲¨Æ÷µÄ·ùƵÏìÓ¦ subplot(2,1,2);plot(ws,20*log10(abs(hs))); grid;
axis([0,10,-90,0]);
xlabel('Hz');ylabel('·ù¶È'); title('È¥¹éÒ»»¯Ä£ÄâµÍͨÂ˲¨Æ÷'); [Mz,Nz]=bilinear(Ms,Ns,1/T); %¶ÔÄ£ÄâÂ˲¨Æ÷Ë«ÏßÐԱ任 [h1,w1]=freqz(Mz,Nz); %Êý×ÖÂ˲¨Æ÷µÄ·ùƵÏìÓ¦ figure
plot(w1/pi,20*log10(abs(h1))); grid;
xlabel('¦Ø/¦Ð');ylabel('·ù¶È(dB)'); title('Êý×ÖµÍͨÂ˲¨Æ÷'); axis([0,1,-160,0])
6
¹éÒ»»¯Ä£ÄâµÍͨÂ˲¨Æ÷0·ù¶È-500123567HzÈ¥¹éÒ»»¯Ä£ÄâµÍͨÂ˲¨Æ÷489100·ù¶È-50012356HzÊý×ÖµÍͨÂ˲¨Æ÷4789100·ù¶È(dB)-50-100-15000.10.20.30.40.5¦Ø/¦Ð0.60.70.80.91
ËÄ¡¢ÊµÑéÄÚÈÝ
1¡¢²ÉÑùËÙÂÊΪ10000Hz£¬ÒªÇóÉè¼ÆÒ»¸ö°ÍÌØÎÖ˹´ø×èÂ˲¨Æ÷£¬fp=[1000Hz£¬1500Hz]£¬fs=[1200Hz£¬1300Hz]£¬
Rp=3dB£¬Rs=30dB¡£
³ÌÐò£º
fn=10000;%²ÉÑùƵÂÊ
fp=[1000,1500]; %ͨ´ø½ØÖ¹ÆµÂÊ fs=[1200,1300]; %×è´øÆðʼƵÂÊ Rp=3; %ͨ´ø×î´óË¥¼õ Rs=30;%×è´ø×îС˥¼õ
Wp=fp/(fn/2);%¼ÆËã¹éÒ»»¯½ÇƵÂÊ Ws=fs/(fn/2);
[n,Wn]=buttord(Wp,Ws,Rp,Rs);%¼ÆËã½×ÊýºÍ½ØÖ¹ÆµÂÊ
[b,a]=butter(n,Wn,'stop');%¼ÆËãH(z)·Ö×Ó¡¢·Öĸ¶àÏîʽϵÊý
[H,F]=freqz(b,a,1000,8000);%¼ÆËãH(z)µÄ·ùƵÏìÓ¦,freqz(b,a,¼ÆËãµãÊý,²ÉÑùËÙÂÊ) subplot(2,1,1)
plot(F,20*log10(abs(H))) %»³ö·ùÆµÌØÐÔͼ
xlabel('Frequency(Hz)'); ylabel('Magnitude(dB)') title('´ø×èÂ˲¨Æ÷')
axis([0 4000 -30 3]);grid on pha=angle(H)*180/pi;
7
subplot(2,1,2)
plot(F,pha);grid on %»³öÏàÆµÌØÐÔͼ xlabel('Frequency(Hz)'); ylabel('phase');
Ìáʾ£º[b,a]=butter(N,Wc,'stop')
2¡¢ ²ÉÑùËÙÂÊΪ10000Hz£¬ÒªÇóÉè¼ÆÒ»¸ö´øÍ¨Â˲¨Æ÷£¬fp=[1000Hz£¬1500Hz]£¬fs=[600Hz£¬1900Hz]£¬Rp=3dB£¬
Rs=20dB¡£
³ÌÐò£º
fn=10000;%²ÉÑùƵÂÊ
fp=[1000,1500]; %ͨ´ø½ØÖ¹ÆµÂÊ fs=[600,1900]; %×è´øÆðʼƵÂÊ Rp=3; %ͨ´ø×î´óË¥¼õ Rs=20;%×è´ø×îС˥¼õ
Wp=fp/(fn/2);%¼ÆËã¹éÒ»»¯½ÇƵÂÊ Ws=fs/(fn/2);
[n,Wn]=buttord(Wp,Ws,Rp,Rs);%¼ÆËã½×ÊýºÍ½ØÖ¹ÆµÂÊ [b,a]=butter(n,Wn);%¼ÆËãH(z)·Ö×Ó¡¢·Öĸ¶àÏîʽϵÊý
[H,F]=freqz(b,a,1000,8000);%¼ÆËãH(z)µÄ·ùƵÏìÓ¦,freqz(b,a,¼ÆËãµãÊý,²ÉÑùËÙÂÊ) subplot(2,1,1)
plot(F,20*log10(abs(H))) %»³ö·ùÆµÌØÐÔͼ xlabel('Frequency(Hz)'); ylabel('Magnitude(dB)') title('´øÍ¨Â˲¨Æ÷') axis([0 4000 -30 3]);grid on
8
pha=angle(H)*180/pi; subplot(2,1,2)
plot(F,pha);grid on %»³öÏàÆµÌØÐÔͼ xlabel('Frequency(Hz)'); ylabel('phase')£»
3¡¢ÒÑÖªËĽ׹éÒ»»¯µÍͨ°ÍÌØÎÖ˹ģÄâÂ˲¨Æ÷ϵͳº¯ÊýΪHa(s)?1s?5s?2s?2s?1432£¬±àдMATLAB³Ì
ÐòʵÏÖ´ÓHa?s?Éè¼Æ3dB½ØÖ¹ÆµÂÊΪwc??4µÄËĽ׸ßͨ°ÍÌØÎÖ˹Êý×ÖÂ˲¨Æ÷¡£ clear;
T=1; fs=1/T; N=4; wc=pi/4;
omegach=2*tan(wc/2)/T;%Ä£ÄâÂ˲¨Æ÷µÄ½ØÖ¹ÆµÂÊ M=1;
N=[1,sqrt(5),2,sqrt(2),1];
[h,w]=freqs(M,N,512); %Ä£ÄâÂ˲¨Æ÷µÄ·ùƵÏìÓ¦ subplot(2,1,1);
plot(w,20*log10(abs(h))); axis([0,10,-90,0]),grid on;
xlabel('Hz');ylabel('·ù¶È'); title('¹éÒ»»¯Ä£ÄâµÍͨÂ˲¨Æ÷'); [Ms,Ns]=lp2lp(M,N,omegach); %¶ÔµÍͨÂ˲¨Æ÷½øÐÐÆµÂʱ任 [hs,ws]=freqs(Ms,Ns,512); %Ä£ÄâÂ˲¨Æ÷µÄ·ùƵÏìÓ¦
9
subplot(2,1,2);plot(ws,20*log10(abs(hs))); grid;
axis([0,10,-90,0]);
xlabel('Hz');ylabel('·ù¶È'); title('È¥¹éÒ»»¯Ä£ÄâµÍͨÂ˲¨Æ÷'); [Mz,Nz]=bilinear(Ms,Ns,1/T); %¶ÔÄ£ÄâÂ˲¨Æ÷Ë«ÏßÐԱ任 [h1,w1]=freqz(Mz,Nz); %Êý×ÖÂ˲¨Æ÷µÄ·ùƵÏìÓ¦ figure
plot(w1/pi,20*log10(abs(h1))); grid;
xlabel('¦Ø/¦Ð');ylabel('·ù¶È(dB)'); title('Êý×ÖµÍͨÂ˲¨Æ÷'); axis([0,1,-160,0])
?t)?cos(400?t)?cos(800?t)ÖеÄÈý¸öÐźŷÖÀë³öÀ´¡£ 4¡¢Éè¼ÆµÍͨÂ˲¨Æ÷£¬°ÑÊäÈëÐźÅx(t)?cos(200ÒªÇ󣺻³öÂ˲¨Ç°ºóÐźŵIJ¨Ðμ°ÆµÆ×¼°µÍͨÂ˲¨Æ÷µÄ·ùƵÏìÓ¦¡£
Ìáʾ£º[b,a]=butter(n,Wn);%¼ÆËãH(z)·Ö×Ó¡¢·Öĸ¶àÏîʽϵÊý y=filter(b,a,x);%¶ÔÊäÈëµÄÐźŽøÐÐÂ˲¨ ³ÌÐò£º
fn=2000;%²ÉÑùƵÂÊ N=2000;%Êý¾ÝµãÊý n=0:N-1;
t=0:1/fs:200/fs;%²ÉÑùʱ¼äÐòÁÐ f0=100;%ÐÅºÅÆµÂÊ
x=cos(2*pi*f0*t)+cos(2*pi*200*t)+cos(2*pi*400*t); subplot(3,1,1); plot(t,x);
10