»ùÓÚRLSËã·¨µÄ¶àÂó¿Ë·ç½µÔ루±£Ö¤ÕýÈ·£© ÏÂÔØ±¾ÎÄ

Î人Àí¹¤´óѧ¡¶ÐÅÏ¢´¦Àí¿ÎȺ×ÛºÏѵÁ·ÓëÉè¼Æ¡·±¨¸æ

¸½Â¼ Ô´³ÌÐò

clc;

[source,fs,bits]=wavread('hen.wav'); noise=0.01*randn(length(source),1); source=source(:,1); source1=source+noise;

wavwrite(noise,fs,'RLSrefns'); %Êä³öÄ£ÄâÔëÉùÐźŠwavwrite(source1,fs,'RLSprimsp'); %Êä³öÄ£ÄâÖ÷ÓïÒôÐźŠprimary=wavread('RLSprimsp.wav'); %¶ÁÈëÂó¿Ë·çÓïÒôÐźŠprimary=primary';

fref=wavread('RLSrefns.wav'); fref=fref';

Worder=32; %Â˲¨Æ÷½×Êý Delta=0.001;

p=(1/Delta)*eye(Worder,Worder); w=zeros(Worder,1);

output=primary; %Ö÷ÓïÒôÊä³ö loopsize=max(size(primary));

for i=1+Worder:loopsize %дRLSËã·¨¹«Ê½ z=primary(i)-w'*(fref(i-Worder+1:i))'; n2=fref(i-Worder+1:i)'; k=p*n2; K=k/(1+n2'*k); w=w+K*z; p0=K*n2'; p=(p-p0*p); output(i-Worder)=z; end

%************************************************************************

figure; %×÷ͼ

%************************************************************************

subplot(2,4,1);

24

Î人Àí¹¤´óѧ¡¶ÐÅÏ¢´¦Àí¿ÎȺ×ÛºÏѵÁ·ÓëÉè¼Æ¡·±¨¸æ

plot(source); %»­³öԭʼÓïÒô²¨ÐÎ title('ԭʼÓïÒô²¨ÐÎ');

[y1,Fs1,bits1]=wavread('hen.wav'); Y1=fft(y1,4096); subplot(2,4,5);

plot(abs(Y1)); %»­³öԭʼÓïÒôƵÆ× title('ԭʼÓïÒôƵÆ×');

%************************************************************************

subplot(2,4,2);

plot(primary); %»­³öÂó¿Ë·çÖ÷ÓïÒô²¨ÐÎ title('Âó¿Ë·çÖ÷ÓïÒô²¨ÐÎ');

[y2,Fs2,bits2]=wavread('RLSprimsp.wav'); Y2=fft(y2,4096); subplot(2,4,6);

plot(abs(Y2)); %»­³öÂó¿Ë·çÖ÷ÓïÒôƵÆ× title('Âó¿Ë·çÖ÷ÓïÒôÊäÈëÆµÆ×');

%************************************************************************

subplot(2,4,3);

plot(fref); %»­³öÔëÉùÓïÒô²¨ÐÎ title('ÔëÉùÓïÒô²¨ÐÎ');

[y3,Fs3,bits3]=wavread('RLSrefns.wav'); Y3=fft(y3,4096); subplot(2,4,7);

plot(abs(Y3)); %»­³öÔëÉùÓïÒôƵÆ× title('ÔëÉùÊäÈëÆµÆ×');

%************************************************************************

subplot(2,4,4);

plot(output); %»­½µÔëºóµÄÓïÒô²¨ÐÎ title('½µÔëºóÓïÒô²¨ÐÎ');

wavwrite(output,fs,'asd'); %Éú³É½µÔëºóµÄÓïÒô [y,Fs4,bits4]=wavread('asd.wav'); Y=fft(y,4096);

25

Î人Àí¹¤´óѧ¡¶ÐÅÏ¢´¦Àí¿ÎȺ×ÛºÏѵÁ·ÓëÉè¼Æ¡·±¨¸æ

subplot(2,4,8);

plot(abs(Y)); %»­³ö½µÔëºóÓïÒôƵÆ× title('½µÔëºóÓïÒôÊä³öƵÆ×');

%************************************************************************

f=1; while f==1

flag=input('ÇëÑ¡ÔñÊä³öÓïÒô£»1-ԭʼÓïÒô 2-¼ÓÔëÖ÷ÓïÒô 3-ÔëÉùÓïÒô 4-½µÔëºóÓïÒô : ');

switch flag case 1

sound(source,fs,bits); case 2

sound(y2,Fs2,bits2); case 3

sound(y3,Fs3,bits3); case 4

sound(output,Fs4,bits4); end

f=input('ÊÇ·ñÖØÐÂÑ¡Ôñ£¿ ÊÇ ÊäÈë1 ·ñ ÊäÈë0 :'); end

26

Î人Àí¹¤´óѧ¡¶ÐÅÏ¢´¦Àí¿ÎȺ×ÛºÏѵÁ·ÓëÉè¼Æ¡·±¨¸æ

±¾¿ÆÉú×ÛºÏѵÁ·³É¼¨ÆÀ¶¨±í

ÐÕ Ãû רҵ¡¢°à¼¶ ͨÐÅ1201°à ÐÔ ±ð ÄÐ ×ÛºÏѵÁ·ÌâÄ¿£º»ùÓÚRLS Ëã·¨µÄ¶àÂó¿Ë·ç½µÔë ×ÛºÏѵÁ·´ð±ç»òÖÊÒɼǼ£º ³É¼¨ÆÀ¶¨ÒÀ¾Ý£º ×îÖÕÆÀ¶¨³É¼¨£¨ÒÔÓÅ¡¢Á¼¡¢ÖС¢¼°¸ñ¡¢²»¼°¸ñÆÀ¶¨£©

Ö¸µ¼½Ìʦǩ×Ö£º

Äê ÔÂ ÈÕ