⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lms_newchannel.m

📁 仿真LMS均衡器 采用三径叠加信道
💻 M
字号:
%前端加训练序列均衡,后端加信息码元并计算误码 
%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.075;%mu值的选取0.02,大步长+少迭代次数,小步长+多迭代次数
k=2;
eb_n0=30;
snr=eb_n0-10*log10(0.5*(N1*(1/fs)/(1/fs)/k));
w=[];%记录第一权值
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);%加入噪声
    psk_s=awgn(psk_s,snr,'measured');
   % 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
        w(k)=estimated_c(1);
        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;
hold on;
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);
    psk_test=awgn(psk_test,snr,'measured');
   % 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%同样延迟码元

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -