clear;
SS=15000;
N=64;
J=64;
M=SS-J+1;
u=0.020; % 2-0
wn=zeros(N,M);
dn=zeros(M,1);
xn=zeros(N,M);
noise=wavread('noise1.wav');
noise=noise(1:SS); % 初始化
b=1;
zz=[1 0.5]; %0-1
%zzz=[1 -0.999];
c=filter(b,zz,noise);
cc=c(1:SS); % 白噪声变为有色噪声
yuyin=wavread('FemaleVoice.wav');
yuyin1=yuyin(14000:SS+13999);
yuyin2=wavread('signal2.wav');
v=zeros(1,18000);
v(3001:8000)=5*yuyin2(1:5000)';
x=yuyin1(1:SS)+0.4444*cc(1:SS)'; % 读入语音信号
wx=[0.3980 -1.4098 -0.0976 0.2061 0.7556 0.7221 -0.6634 -0.0193 -0.1545 0.0759 ...
0.0746 0.2668 0.1990 0.6794 0.0390 0.0300 -0.2585 0.0132 0.0196 -0.1571...
-0.0511 -0.2134 -0.1050 0.2195 0.0860 0.0982 -0.1320 -0.1543 0.1284 0.0468 ...
0.0302 0.0479 -0.0521 0.0418 -0.0697 0.0332 -0.0545 -0.0506 0.0008 -0.0056 ...
0.0525 0.0078 0.0293 0.0361 0.0189 0.0114 -0.0044 -0.0168 0.0365 -0.0009 ...
0.0144 0.0080 -0.0061 0.0188 -0.0060 -0.0060 -0.0033 -0.0080 0.0001 -0.0003...
-0.0000 -0.0018 -0.0057 -0.0090]; % 回声路径参数
xx=zeros(J,SS-J+1);
for i=1:SS-J+1;
xx(:,i)=x(i+J-1:-1:i,1);
end
dd(1)=xx(:,1)'*wx';%+0.5*noise(1);
for i=2:SS-J+1;
dd(i)=xx(:,i)'*wx';%+0.5*noise(i);
end
dn=dd';
for i=1:M;
xn(:,i)=x(i+N-1:-1:i,1);
end % 进行必要的矩阵变换
for i=1:M
yn(i)=wn(:,i)'*xn(:,i);
e(i)=dn(i)-yn(i);
wn(:,i+1)=wn(:,i)+2*u*e(i)*xn(:,i); % LMS的自适应算法 !!!
end
mse=(e-mean(e)).^2;
subplot(4,1,3);
plot(e);
%axis([1 5000 -5 5]);
ylabel('误差e');
grid
subplot(4,1,2);
plot(yn);
%axis([1 5000 -2 2]);
ylabel('回声估计') ;
grid
subplot(4,1,1);
plot(dn);
%axis([1 18000 -1 1]);
ylabel('模拟回声 dn');
grid
subplot(4,1,4);
semilogy(mse);
ylabel('均方误差 mse');
grid % 输出图形