資源簡介
回聲消除算法比較,仿射投影APA與NLMS算法比較
代碼片段和文件信息
%?v1=100;%載波頻率1%
%?v2=200;%載波頻率2%
%?v3=400;%載波頻率3%
%?r=1000;%采樣頻數(shù)%
%?k=1:100;
%?t=(k-1)/r;%離散時間%
%?s=sin(2*pi*v1*t)+sin(2*pi*v2*t)+sin(2*pi*v3*t);%由三個不同頻率正玹組合的信號%
[far?fs?bits]???=?wavread(‘play.wav‘);??
?[near?fs?bits]???=?wavread(‘Record.wav‘);??
?far=far‘;
?near=near‘;
?M=length(far);
?temp(1:2500)=near(1:2500);
?near(1:M-2500)=near(2500:M-1);
?near(M-2500+1:M)=temp(1:2500);
?
??mm1=19000;
?mm2=22000;
?mm=mm2-mm1;
?far=far(mm1:mm2);
?near=near(mm1:mm2);
?
?L?=?mm+1;???????%input?data?size?
N1?=?10;?????????%filter?length?
nvar?=?.001;????%output?noise?variance????
w0?=?zeros(N11);????%initialization?for?adaptive?filters?
mu?=?0.1;???????%step-size?parameter?
epsilon?=?1e-5;?%regularization?parameter?
gamma1?=?0.08;??%error?bound?
gamma2?=?0.03;?
MCruns?=?10;???%Monte?Carlo?simulation?runs?
mse_apa1?=?zeros(L1);??%MSE?vectors?for?Monte?Carlo?simulations?
%?mse_apa2?=?zeros(L21);
%?mse_apa3?=?zeros(L31);
?for?I?=?1:MCruns?????
?????P?=?5;??????%APA?order?
????%%%%%%%%%%%%%%%%%%
????%%對cd1進行apa濾波
?????x=far‘;
?????d=near‘;
????eAPA1?=?full_apa(xdN1Pw0muepsilon);?
????mse_apa1?=?mse_apa1?+?eAPA1.^2;??
?
?end
?mse_apa1?=?mse_apa1/MCruns;?
?
?
?
???
Rin=far;?%遠端信號
??%?%?Sinn=pecho;
Sinn=near;%近端信號——近端說話人的語音信號與回聲疊加構(gòu)成
N=240;
M1=mm;
?x=Rin(1:N);%??x?為遠端信號截短
?w=zeros(1N);
?en1=zeros(1M1);
?a=0.0001;
?u=0.5;
?Dtemp=x(1:N-1)*x(1:N-1)‘;%濾波器輸入信號的能量
?sout=zeros(1M1);
?
?for?i=N:M1;?
?????x(N)=Rin(i);?%遠端信號
?????D=Dtemp+x(N).^2;
?????y=dot(wx);
?????en1(i)=Sinn(i)-y;??
???????w=w+u*en1(i)*x/(a+D);??????%遠端模式,進行濾波器系數(shù)更新
?????end;???
%?????%%%%%%%%%更新濾波器輸入信號的能量值%%%%%%%%%%
?????Dtemp=D-x(1).^2;
????x(1:N-1)=x(2:N);
????
??
???figure(6);
???semilogy(1:mm+1?mse_apa1‘b-‘...
???????1:mmen1‘‘r--‘);
??xlim([03000]);?
?xlabel(‘k‘)?ylabel(‘MSE‘)?
%?g0=[0.68301;1.18301;0.31699;-0.18301];%分解高通濾波系數(shù)%
%?k=[0;1;2;3];
%?g1=flipud(g0).*(-1).^k;%分解低通濾波系數(shù)%
%?h0=flipud(g0)/2;%重構(gòu)高通濾波系數(shù)%
%?h1=flipud(g1)/2;%重構(gòu)低通濾波系數(shù)%
%?
%?%分解過程%
%?
%?x=conv(farh0);
%?a0=x(1:2:length(x));%卷積后采樣獲得第一級分解近似部分%
%?x=conv(farh1);
%?w0=x(1:2:length(x));%卷積后采樣獲得第一級分解細(xì)節(jié)部分%
%?x=conv(a0h0);
%?a1=x(1:2:length(x));%卷積后采樣獲得第二級分解近似部分%
%?x=conv(a0h1);
%?w1=x(1:2:length(x));%卷積后采樣獲得第二級分解細(xì)節(jié)部分%
%?
%?x=conv(a1h0);
%?a2=x(1:2:length(x));%卷積后采樣獲得第三級分解近似部分%
%?x=conv(a1h1);
%?w2=x(1:2:length(x));%卷積后采樣獲得第三級分解細(xì)節(jié)部分%
%?
%??figure(2);
%??subplot(511)
%??plot(far);?
%??ylabel(‘far‘);
%?subplot(512)
%??plot(a2);
%???ylabel(‘a(chǎn)2‘);
%??subplot(513)
%??plot(w2);
%???ylabel(‘w2‘);
%??subplot(514)
%??plot(w1);
%???ylabel(‘w1‘);
%??subplot(515)
%??plot(w0);
%???ylabel(‘w0‘);
%?figure(1);?%畫出信號圖和其頻譜圖%
%?subplot(211)plot(s)
%?ylabel(‘signal‘);
%?subplot(212)stem(linspace(-r/4r/4100)abs(fftshift(fft(s))));
%?ylabel(‘幅度譜‘);
%?
%?figure(2)%畫出第一級近似部分與細(xì)節(jié)部分的時間和頻譜圖%
%?subplot(221)plot(a0)
%?ylabel(‘a(chǎn)_0‘);
%?subplot(222)stem(linspace(-r/4r/452)abs(fftshift(fft(a0))));
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4724??2012-12-06?10:45??APA.m
評論
共有 條評論