»ùÓÚmatlabµÄÓïÒôÐźÅÂ˲¨È¥Ôë ÏÂÔر¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2024/5/20 4:24:11ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

ËÞÖÝѧԺ±ÏÒµÉè¼Æ È¥ÔëºÍ·ÂÕæµÄÑо¿

¼ÓÔëÓïÒôÐźÅʱÓò²¨ÐÎ10.5·ùÖµA0-0.5-100.20.40.60.81ʱ¼äÖá1.21.41.61.8x 1025¼ÓÔëÓïÒôÐźÅƵÆ×ͼ15001000ƵÂÊ·ùÖµ500000.51ƵÂÊHz1.522.5x 104

ͼ4 ¼ÓÔëÐźÅʱÓò²¨ÐκÍƵÆ×

ÔÙͨ¹ý¶ÔԭʼÓïÒôÐźŵĻطÅЧ¹ûÓë¼ÓÔëºóµÄÓïÒôÐźŻطŵÄЧ¹ûµÄ¶Ô±È,È˶ú¿ÉÒÔÃ÷ÏÔ±æ±ð³öÁ½ÖÖÓïÒôÐźŲ»Ò»ÑùÁË£¬¼ÓÔëºóµÄÓïÒôÐźÅÔÚÌý¾õÉϱÈԭʼÓïÒôÐźÅÒª»ë×Ǻܶ࣬¶øÇÒ»¹ÓÐÖ¨Ö¨¸Â¸ÂµÄ»ìÔÓÒô¡£

3.4 È¥Ôë¼°·ÂÕæ

(1)FIRÂ˲¨Æ÷·¨È¥Ôë

ͨ¹ý¶ÔÉÏÒ»½ÚÖмÓÔëÓïÒôÐźźÍԭʼÓïÒôÐźÅƵÆ×ͼ¶Ô±È¿ÉÒÔÖªµÀ£¬ÔëÒô´ó²¿·ÖÊÇHz´óÓÚ5000µÄ²¿·Ö£¬¹ÊÉè¼ÆµÍͨÂ˲¨Æ÷½øÐÐÂ˲¨´¦Àí¡£½ÓÏÂÀ´ÎÒÃÇÒªÓÃÉè¼ÆµÄFIRµÍͨÂ˲¨Æ÷¶ÔÉÏÒ»½ÚÖмÓÔëÓïÒôÐźŽøÐÐÂ˲¨´¦Àí¡£

ÓÃ×Ô¼ºÉè¼ÆµÄFIRÊý×ÖµÍͨÂ˲¨Æ÷¶Ô¼ÓÔëµÄÓïÒôÐźŽøÐÐÂ˲¨Ê±£¬ÔÚMatlabÖУ¬FIRÂ˲¨Æ÷ÀûÓú¯Êýfft¶ÔÐźŽøÐÐÂ˲¨¡£º¯ÊýfftÓõÄÊÇÖصþÏà¼Ó·¨ÊµÏÖÏßÐÔ¾í»ýµÄ¼ÆËã¡£µ÷ÓøñʽΪ£ºy=fft(h,x,M)¡£ÆäÖУ¬hÊÇϵͳµ¥Î»³å»÷ÏìÓ¦ÏòÁ¿£»xÊÇÊäÈëÐòÁÐÏòÁ¿£»yÊÇϵͳµÄÊä³öÐòÁÐÏòÁ¿£¬MÊÇÓÐÓû§Ñ¡ÔñµÄÊäÈëÐòÁеķֶγ¤¶È£¬È±Ê¡Ê±£¬Ä¬ÈϵÄÊäÈëÏòÁ¿µÄÖس¤¶ÈM=512¡£ ÓÃÉè¼ÆºÃµÄFIRÊý×ÖµÍͨÂ˲¨Æ÷¶Ô¼ÓÔëÓïÒôÐźŵÄÂ˲¨³ÌÐò£º

[y,fs,bits]=wavread('chushi.wav'); sound(y,fs) n=length(y) y_p=fft(y,n);

¡¤

11

ËÞÖÝѧԺ±ÏÒµÉè¼Æ È¥ÔëºÍ·ÂÕæµÄÑо¿

f=fs*(0:n/2-1)/n;figure(1) subplot(2,1,1); plot(y);

title('ԭʼÓïÒôÐźŲÉÑùºóµÄʱÓò²¨ÐÎ'); xlabel('ʱ¼äÖá') ylabel('·ùÖµA') subplot(2,1,2); plot(f,abs(y_p(1:n/2)));

title('ԭʼÓïÒôÐźŲÉÑùºóµÄƵÆ×ͼ'); xlabel('ƵÂÊHz'); ylabel('ƵÂÊ·ùÖµ'); L=length(y)

noise=0.1*randn(L,2); y_z=y+noise; sound(y_z,fs) n=length(y); y_zp=fft(y_z,n); f=fs*(0:n/2-1)/n;figure(2) subplot(2,1,1);plot(y_z); title('¼ÓÔëÓïÒôÐźÅʱÓò²¨ÐÎ'); xlabel('ʱ¼äÖá') ylabel('·ùÖµA')

subplot(2,1,2);

plot(f,abs(y_zp(1:n/2))); title('¼ÓÔëÓïÒôÐźÅƵÆ×ͼ'); xlabel('ƵÂÊHz'); ylabel('ƵÂÊ·ùÖµ'); 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];

¡¤

12

ËÞÖÝѧԺ±ÏÒµÉè¼Æ È¥ÔëºÍ·ÂÕæµÄÑо¿

mag=[1 0];dev=[p s];

[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev); b21=fir1(n21,wn21,Kaiser(n21+1,beta)); [h,w]=freqz(b21,1);plot(w/pi,abs(h)); title('FIRµÍͨÂ˲¨Æ÷');x=fftfilt(b21,y_z); X=fft(x,n);figure(4);

subplot(2,2,1);plot(f,abs(y_zp(1:n/2))); title('Â˲¨Ç°ÐźŵÄƵÆ×'); subplot(2,2,2);plot(f,abs(X(1:n/2))); title('Â˲¨ºóÐźŵÄƵÆ×'); subplot(2,2,3);plot(y_z); title('Â˲¨Ç°ÐźŵÄʱÓò²¨ÐÎ') subplot(2,2,4);plot(x); title('Â˲¨ºóÐźŵÄʱÓò²¨ÐÎ') sound(x,fs,bits) ¶øºóµÃµ½Í¼ÏñÈçͼ5Ëùʾ:

Â˲¨Ç°ÐźŵÄƵÆ×150010005000150010005000Â˲¨ºóÐźŵÄƵÆ×0123401234x 10Â˲¨Ç°ÐźŵÄʱÓò²¨ÐÎ10.50-0.5-100.511.5x 10x 10Â˲¨ºóÐźŵÄʱÓò²¨ÐÎ10.50-0.525-100.511.5x 1025

ͼ5 FIRÂ˲¨Ð§¹ûͼ

¡¤

13

ËÞÖÝѧԺ±ÏÒµÉè¼Æ È¥ÔëºÍ·ÂÕæµÄÑо¿

·ÖÎö£º´ÓÒÔÉÏËÄͼµÄ±È½Ï£¬¿ÉÒÔºÜÃ÷ÏÔºÍÖ±¹ÛµÄ¿´³öԭʼÓïÒôÐźźͼÓÔëÓïÒôÐźÅʱÓò²¨ÐκÍƵÆ×ͼµÄÇø±ð¡£¼ÓÔëºóµÄÓïÒôÐźŵÄʱÓò²¨ÐαÈԭʼÓïÒôÐźÅҪģºýµÃ¶à£¬ÆµÆ×ͼÔòÊÇÔÚƵÂÊ5000HzÒÔºó³öÏÖÁËÃ÷ÏԵı仯¡£

ͨ¹ýÂ˲¨Ç°µÄÐźŲ¨ÐκÍƵÆ×ͼµÄ¶Ô±È£¬¿ÉÒÔÃ÷ÏÔ¿´³ö£¬Â˲¨ºóµÄ²¨ÐοªÊ¼±äµÃÇåÎúÁË£¬¿ªÊ¼Óеã½Ó½üԭʼÐźŵIJ¨ÐÎͼÁË¡£Â˲¨ºóÐźŵÄƵÆ×ͼҲÔÚ5000HzÒÔºó¿ªÊ¼Öð½¥½Ó½üԭʼÓïÒôÐźŵÄƵÆ×ͼ¡£

ÔÙ´Ó¶ÔÓïÒôÐźŵĻطţ¬È˶ú¿ÉÒÔ±æ±ð³ö¼ÓÔëºóµÄÓïÒôÐźűȽϻë×Ç£¬»¹ÓкÜÃ÷ÏÔ¸ÂÖ¨¸ÂÖ¨µÄÔÓÒôÔÚÀïÃæ¡£Â˲¨ºó£¬ÓïÒôÐźŽϼÓÔëºóµÄÐźÅÓÐÁËÃ÷ÏԵĸÄÉÆ£¬»ù±¾¿ÉÒÔÌýÇå³þÁË£¬¶øÇÒÔÓÒôҲûÓÐÄÇôǿÁÒ£¬µ«ÊÇÉùÒôÒÀȻûÓÐԭʼÓïÒôÐźÅÄÇôÇåÎú´à¶ú¡£ (2£©IIRÂ˲¨Æ÷·¨È¥Ôë

ͬÑù£¬Ò²Éè¼ÆÒ»¸ö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;

[y,fs,nbits]=wavread ('BYSJ.wav');

n=length(y)£» %Çó³öÓïÒôÐźŵij¤¶È noise=0.01*randn(n,2); %Ëæ»úº¯Êý²úÉúÔëÉù s=y+noise; %ÓïÒôÐźżÓÈëÔëÉù S=fft(s); %¸µÀïÒ¶±ä»» z11=filter(num11,den11,s); sound(z11);

m11=fft(z11); %ÇóÂ˲¨ºóµÄÐźŠsubplot(2,2,1);

¡¤

14

ËÞÖÝѧԺ±ÏÒµÉè¼Æ È¥ÔëºÍ·ÂÕæµÄÑо¿

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('Â˲¨ºóµÄÐźŲ¨ÐÎ'); µÃµ½Í¼ÏñÈçÏ£º

Â˲¨Ç°ÐźŵÄƵÆ×150010005000150010005000Â˲¨ºóÐźŵÄƵÆ×00.511.5x 102500.511.5x 1025Â˲¨Ç°ÐźŵIJ¨ÐÎ10.50-0.5-100.511.5x 1025Â˲¨ºóµÄÐźŲ¨ÐÎ10.50-0.5-100.511.5x 1025ͼ6 IIRÂ˲¨Ð§¹ûͼ

ͨ¹ýÔËÐгÌÐò£¬ÎÒÃÇ¿ÉÒÔÌý³ö£¬Â˲¨Ð§¹ûºÜ²»ºÃ£¬Ê§ÕæÏÖÏóÑÏÖØ£¬²¢ÇÒ³öÏÖÁËÑÏÖصļÄÉúÕðµ´,»ù±¾ÎÞ·¨·Ö±æ³öÔ­ÓïÒôÐźš£

¡¤

15