%%%%%%%%%%%%%%%%%%%% LMS程序 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ntr=9000;
s=sign(2*rand(1,ntr)-1);%生成双极性码
b = cos(pi/5)*[0.2 0.7 0.9];
% b= [0.005 0.0092 -0.0242 0.8542 -0.2182 0.0492 -0.0162];
a = 1;
% Transmission channel filter传输通道滤波器
channel = dfilt.df2t(b,a);
%信道输出信号x(n)
x=filter(b,a,s);
%增加信道噪声
snr=30;%信噪比
u=awgn(x,snr,'measured');% Add white Gaussian noise.即滤波器的输入向量
%Trained Equalization
M=11; %滤波器的抽头数
% d is training signal is a shifted version of the original transmitted
% d是训练信号
% signal s[n].
d = [zeros(1,M) s(1:ntr-M+1)];
mu=0.03; %收敛因子u
w=zeros(1,M);%滤波器系数初始化
%LMS算法
for i=M:ntr
y(i)=w*u(i:-1:i-M+1)';
e(i)=d(i)-y(i);
w=w+2*mu*e(i)*u(i:-1:i-M+1);
end
figure(1)
subplot(4,1,1);stem(u(5000:5500),'r');title('均衡前信号u(n)');axis([1 50 -2 2]);
subplot(4,1,2);stem(y(5000:5500),'r');title('均衡后输出信号y(n)');axis([1 60 -2 2]);
subplot(4,1,3);stem(d(5000:5500),'r');title('期望输出d(n)');axis([1 50 -2 2]);
subplot(4,1,4);stem(e(5000:5500),'r');title('e(n)');axis([1 50 -0.5 0.5]);
figure (2)
%subplot(2,1,1)
plot(abs(e).^2);axis([-100 6000 -0.2 2]);
% semilogy(abs(e).^2);
xlabel('迭代数量');
ylabel('均方误差')
title('LMS算法 SNR=30 u=0.03 M=11');