Î人Àí¹¤´óѧ¡¶ÐÅÏ¢´¦Àí¿ÎȺ×ÛºÏѵÁ·ÓëÉè¼Æ¡·±¨¸æ
¸½Â¼ Ô´³ÌÐò
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 Ëã·¨µÄ¶àÂó¿Ë·ç½µÔë ×ÛºÏѵÁ·´ð±ç»òÖÊÒɼǼ£º ³É¼¨ÆÀ¶¨ÒÀ¾Ý£º ×îÖÕÆÀ¶¨³É¼¨£¨ÒÔÓÅ¡¢Á¼¡¢ÖС¢¼°¸ñ¡¢²»¼°¸ñÆÀ¶¨£©
Ö¸µ¼½Ìʦǩ×Ö£º
Äê ÔÂ ÈÕ