• PUDN用户
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 31
    下载次数
  • 2010-04-12 14:58
    上传日期
用LMS算法实现自适应均衡器的MATLAB程序
LMS_newchannel.rar
  • LMS_newchannel.m
    2.4KB
内容介绍
%前端加训练序列均衡,后端加信息码元并计算误码 clc;clear all;close all; N1=20;%一个码元抽样点数 fs=5000;%抽样频率 f=2000;%PSK载波频率 N=600; K=5; %actual_isi=[0.05 -0.063 0.088 -0.126 -0.25 0.9047 0.25 0 0.126 0.038 0.088];%信道 sigma=0.01; u=0.15;%mu值的选取0.02,大步长+少迭代次数,小步长+多迭代次数 Num_of_realizations=100; mse_av=zeros(1,N-2*K); for j=1:Num_of_realizations for i=1:N if (rand<0.5) info(i)=-1; else info(i)=1; end end i=0; for j=1:N for t=0:1/fs:(N1-1)/fs i=i+1; psk_s(i)=sin(2*pi*f*t)*info(j); ss(i)=sin(2*pi*f*i/fs);%本地恢复载波 end end psk_s=psk_s+0.1*rand(1,N*N1);%加入噪声 % yt=psk_s+0.5*[zeros(1,30) psk_s(1:N*N1-30)];%两径 yt=psk_s+0.5*[zeros(1,30) psk_s(1:N*N1-30)]+0.707*[zeros(1,10) psk_s(1:N*N1-10)];%三径 %y1=filter(actual_isi,1,yt); y1=yt; y2=y1.*ss;%解调 b=fir1(34,0.20);% y2=filter(b,1,y2); for i=1:N y(i)=y2(i*N1);%抽样 end estimated_c=[0 0 0 0 0 1 0 0 0 0 0]; for k=1:N-2*K y_k=y(k:k+2*K); z_k=estimated_c*y_k.'; e_k=info(k+9)-z_k;%期望序列延迟 estimated_c=estimated_c+u*e_k*y_k; mse(k)=e_k^2; end mse_av=mse_av+mse; end mse_av=mse_av/Num_of_realizations; figure(1); semilogy((1:length(mse_av)),mse_av);title('e_k^2'); figure(2); subplot(211) plot(1:N*N1,psk_s);title('psk+noise'); subplot(212) plot(1:N*N1,yt);title('psk+noise+multipath'); figure(3); subplot(211) stem(1:N,y);title('demodulate+sample'); subplot(212) stem(info);title('training squense'); %%均衡后信息码元 test=randsrc(1,N); i=0; for j=1:N for t=0:1/fs:(N1-1)/fs i=i+1; psk_test(i)=sin(2*pi*f*t)*test(j); ss_test(i)=sin(2*pi*f*i/fs);%本地恢复载波 end end psk_test=psk_test+0.1*rand(1,N*N1); % ytest=psk_test+0.5*[zeros(1,30) psk_test(1:N*N1-30)];%两径 ytest=psk_test+0.5*[zeros(1,30) psk_test(1:N*N1-30)]+0.707*[zeros(1,10) psk_test(1:N*N1-10)];%三径 % ytest1=filter(actual_isi,1,ytest); ytest1=ytest; ytest2=ytest1.*ss_test;%解调 btest=fir1(34,0.20);%低通滤波 ytest2=filter(btest,1,ytest2); for i=1:N ytout(i)=ytest2(i*N1); end for i=1:200 tt5(i)=ytout(i:i+10)*estimated_c'; %输出序列 end tt6=sign(tt5); ber=sum(tt6~=test(1+9:200+9))/200%同样延迟码元
评论
    相关推荐