µ±Ç°Î»ÖãºÊ×Ò³ > ÓÐÔëÉùµÄÓïÒôÐźŷÖÎöÓë´¦ÀíÉè¼Æ - ͼÎÄ
4. ÅíÆôçýµÈ£¬DSP¼¼ÊõµÄ·¢Õ¹ÓëÓ¦Ó㬵ڶþ°æ£¬¸ßµÈ½ÌÓý³ö°æÉ磬2007 5. ÑîÊö±óµÈ£¬Êý×ÖÐźŴ¦Àíʵ¼ù½Ì³Ì£¬µÚÒ»°æ£¬»ªÖпƼ¼´óѧ³ö°æÉ磬2007 6£®ÁõÓ±»ÛMATLABR2007»ù´¡½Ì³Ì[M].Ç廪´óѧ³ö°æÉç.2008
7£®Íõçù£¬ÐìʽÔÌ£¬ÕÔî£ÌΣ¬¸ß¾ü·å£¬³£´ºÌÙ MATLAB»ù´¡ÓëÓ¦ÓÃʵÀý¼¯ÝÍ[M].ÈËÃñÓʵç³ö°æÉç.2007
8£®ÕÅÍþ.MATLAB»ù´¡Óë±à³ÌÈëÃÅ[M].Î÷°²µç×ӿƼ¼´óѧ³ö°æÉç.2004 Æß¡¢¸½Â¼
¶ÁÈ¡ÓïÒôÐźÅ
[y,fs,nbits]=wavread ('123.wav'); sound(y,fs,nbits); %»Ø·ÅÓïÒôÐźÅ
n = length (y) ; %Çó³öÓïÒôÐźŵij¤¶È Y=fft(y,n); %¸µÀïÒ¶±ä»»
subplot(2,1,1);plot(y);title('ÔʼÐźŲ¨ÐÎ'); subplot(2,1,2);plot(abs(Y));title('ÔʼÐÅºÅÆµÆ×') ¼ÓÔëÉù
[y,fs,nbits]=wavread ('123.wav');
n = length (y) ; %Çó³öÓïÒôÐźŵij¤¶È noise=0.01*randn(n,1); %Ëæ»úº¯Êý²úÉúÔëÉù
s=y+noise; %ÓïÒôÐźżÓÈëÔëÉù sound(s);
subplot(2,1,1);
plot(s);title('¼ÓÔëÓïÒôÐźŵÄʱÓò²¨ÐÎ'); S=fft(s); %¸µÀïÒ¶±ä»» subplot(2,1,2);
plot(abs(S));title('¼ÓÔëÓïÒôÐÅºÅµÄÆµÓò²¨ÐÎ') title('¼ÓÔëÓïÒôÐÅºÅµÄÆµÓò²¨ÐÎ');
=========================IIRµÍͨÂ˲¨Æ÷=======================
Ft=8000; Fp=1000; Fs=1200;
wp=2*pi*Fp/Ft; ws=2*pi*Fs/Ft; fp=2*Ft*tan(wp/2); fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,'s'); %ÇóµÍͨÂ˲¨Æ÷µÄ½×ÊýºÍ½ØÖ¹ÆµÂÊ [b11,a11]=butter(n11,wn11,'s'); %ÇóSÓòµÄƵÂÊÏìÓ¦µÄ²ÎÊý
[num11,den11]=bilinear(b11,a11,0.5); %ÀûÓÃË«ÏßÐԱ任ʵÏÖÆµÂÊÏìÓ¦SÓòµ½ZÓòµÄ±ä»» [h,w]=freqz(num11,den11); %¸ù¾Ý²ÎÊýÇó³öƵÂÊÏìÓ¦ plot(w*8000*0.5/pi,abs(h));
legend('ÓðÍÌØÎÖ˹butterÉè¼Æ'); grid
=========================IIR´øÍ¨Â˲¨Æ÷=======================
21
Fp1=1200; Fp2=3000; Fs1=1000; Fs2=3200; Ft=8000;
wp1=tan(pi*Fp1/Ft); %´øÍ¨µ½µÍͨÂ˲¨Æ÷µÄת»» wp2=tan(pi*Fp2/Ft); ws1=tan(pi*Fs1/Ft); ws2=tan(pi*Fs2/Ft); w=wp1*wp2/ws2; bw=wp2-wp1; wp=1;
ws=(wp1*wp2-w.^2)/(bw*w);
[n12,wn12]=buttord(wp,ws,1,50,'s'); %ÇóµÍͨÂ˲¨Æ÷½×ÊýºÍ½ØÖ¹ÆµÂÊ [b12,a12]=butter(n12,wn12,'s'); %ÇóSÓòµÄƵÂÊÏìÓ¦²ÎÊý
[num2,den2]=lp2bp(b12,a12,sqrt(wp1*wp2),bw);%½«SÓòµÍͨ²ÎÊýתΪ´øÍ¨µÄ [num12,den12]=bilinear(num2,den2,0.5);%Ë«ÏßÐԱ任ʵÏÖSÓòµ½ZÓòµÄת»» [h,w]=freqz(num12,den12); %¸ù¾Ý²ÎÊýÇó³öƵÂÊÏìÓ¦ plot(w*8000*0.5/pi,abs(h)); axis([0 4000 0 1.5]);
legend('ÓðÍÌØÎÖ˹bbutterÉè¼Æ'); grid;
=========================IIR¸ßͨÂ˲¨Æ÷=======================
Ft=8000; Fp=4000; Fs=3500;
wp1=tan(pi*Fp/Ft); ws1=tan(pi*Fs/Ft); wp=1;
ws=wp1*wp/ws1;
[n13,wn13]=cheb1ord(wp,ws,1,50,'s'); [b13,a13]=cheby1(n13,1,wn13,'s'); [num,den]=lp2hp(b13,a13,wn13);
[num13,den13]=bilinear(num,den,0.5); [h,w]=freqz(num13,den13); plot(w*21000*0.5/pi,abs(h)); title('IIR¸ßͨÂ˲¨Æ÷');
legend('ÓÃÇбÈÑ©·òcheby1Éè¼Æ'); axis([0 12000 0 1.5]); grid;
========================IIRellipordÂ˲¨Æ÷=======================
Y=fft(y,5096);
fb=1000;fc=1200;As=300;Ap=1;fs=22350; wc=2*fc/fs; wb=2*fb/fs;
[N,wp]=ellipord(wp,ws,rp,rs); [B,A]=ellip(N,rp,rs,wp);
22
figure(1);
**************************FIRµÍͨÂ˲¨Æ÷*****************************
Ft=8000; Fp=1000; Fs=1200; wp=2*Fp/Ft; ws=2*Fs/Ft; rp=1; rs=50;
p=1-10.^(-rp/20); %ͨ´ø×è´ø²¨ÎÆ s=10.^(-rs/20); fpts=[wp ws]; mag=[1 0]; dev=[p s];
[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);
b21=fir1(n21,wn21,Kaiser(n21+1,beta)); %ÓÉfir1Éè¼ÆÂ˲¨Æ÷ [h,w]=freqz(b21,1); %µÃµ½ÆµÂÊÏìÓ¦ plot(w/pi,abs(h));
title('FIRµÍͨÂ˲¨Æ÷'); grid;
**************************FIR´øÍ¨Â˲¨Æ÷*****************************
Fp1=1200; Fp2=3000; Fs1=1000; Fs2=3200; Ft=8000;
wp1=Fp1*2*pi/Ft; wp2=Fp2*2*pi/Ft; ws1=Fs1*2*pi/Ft; ws2=Fs2*2*pi/Ft; wc1=wp1-ws1; rp=1; rs=50;
beta=0.1102*(rs-8.7);
n22=ceil((rs-7.95)/2.286/wc1);
wn22=[(wp1+ws1)/2/pi,(wp2+ws2)/2/pi]; wn= kaiser(n22+1,beta); b22=fir1(n22,wn22,wn); [h,w]=freqz(b22,1); plot(w/pi,abs(h));
title('FIR´øÍ¨Â˲¨Æ÷by¿Ôó´°'); grid;
**************************FIR¸ßͨÂ˲¨Æ÷*****************************
Ft=8001; Fp=4000; Fs=3500;
23
wp=2*Fp/Ft; ws=2*Fs/Ft; rp=1;rs=50;
p=1-10.^(-rp/20); %ͨ´ø×è´ø²¨ÎÆ s=10.^(-rs/20); fpts=[ws wp]; mag=[0 1]; dev=[p s];
[n23,wn23,beta,ftype]=kaiserord(fpts,mag,dev); b23=fir1(n23,wn23,'high',Kaiser(n23+1,beta)); [h,w]=freqz(b23,1);
plot(w*12000*0.5/pi,abs(h)); title('FIR¸ßͨÂ˲¨Æ÷'); axis([2000 6000 0 1.2]); grid
% ======================Ë«ÏßÐԱ任·¨======================= %*************************µÍͨÂ˲¨Æ÷************************
[y,fs,nbits]=wavread ('123.wav');
n = length (y) ; %Çó³öÓïÒôÐźŵij¤¶È noise=0.01*randn(n,1); %Ëæ»úº¯Êý²úÉúÔëÉù s=y+noise; %ÓïÒôÐźżÓÈëÔëÉù S=fft(s); %¸µÀïÒ¶±ä»» z11=filter(num11,den11,s); sound(z11);
m11=fft(z11); %ÇóÂ˲¨ºóµÄÐźŠsubplot(2,2,1); plot(abs(S),'g');
title('Â˲¨Ç°ÐÅºÅµÄÆµÆ×'); grid;
subplot(2,2,2); plot(abs(m11),'r');
title('Â˲¨ºóÐÅºÅµÄÆµÆ×'); grid;
subplot(2,2,3); plot(s);
title('Â˲¨Ç°ÐźŵIJ¨ÐÎ'); grid;
subplot(2,2,4); plot(z11);
title('Â˲¨ºóµÄÐźŲ¨ÐÎ');
**********************´øÍ¨Â˲¨Æ÷*****************************
[y,fs,nbits]=wavread('123.wav');
n = length (y) ; %Çó³öÓïÒôÐźŵij¤¶È noise=0.01*randn(n,1); %Ëæ»úº¯Êý²úÉúÔëÉù s=y+noise; %ÓïÒôÐźżÓÈëÔëÉù S=fft(s); %¸µÀïÒ¶±ä»»
24
¹²·ÖÏí92ƪÏà¹ØÎĵµ