声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1367|回复: 0

[其他] 求助:短波信道中DD-LMS盲判决反馈均衡算法的实现.

[复制链接]
发表于 2007-4-4 22:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
在短波信道中,如何用matlab软件实现DD-LMS算法的盲均衡?程序怎么写啊?
还有用变步长归一化LMS均衡算法实现?用基于归一化符号DD-LMS均衡算法实现?我不知道怎么修改下面的程序,请高手指教!谢谢!
下面是参考的自适应的均衡算法(不同步长):
(在程序中修改一下,成为盲均衡算法)
% %%lms算法
clear;
%wn=[2.9 3.1 3.3 3.5];
delta1=[0.075 0.025 0.0075];
Nm=500; Mm=1500; L=10;
wn1=3.1;  

for jj=1:3
    delta=delta1(jj);  
    mse=zeros(1,Mm-L);
    e=zeros(1,Mm-L);
    for ii=1:200
        generate(Nm,Mm,1);
        load send;
        for n=1:3
            h(n)=0.5*(1+cos(2*pi*(n-2)/wn1));
        end;
        r=s;
        d=conv(r,h);
        snr=30;
        d1=awgn(d,snr,'measured');  %add gaussian white noise


        M=length(d1);  %d1 相当于函数中的r   
        N=length(s);  %s 相当于函数中的train
        L=10;
%xu       a=zeros(L+1,N);
  %xu      y=zeros(1,M);
           w=zeros(L+1,1);
           
    %%%lms initialization
   
        u_n=zeros(L+1,1);
   
        for n=L/2:N-L/2-1
            u_n=d1(n+L/2+1:-1:n-L/2+1).';  %%%******* attention  *******
            e_n=s(n)-w'*u_n;
            w=w+delta*conj(e_n)*u_n;
            e(n-L/2+1)=e_n;
         %   a(:,n-L/2+1)=w;
        end;
        mse=mse+e.^2;
     end;
    mse=mse/200;
       if delta==0.075
        mse2=mse;
       end;
       if delta==0.025
        mse3=mse;
       end;
       if delta==0.0075
        mse4=mse;
       end;
end;
save lmsmiu;
load lmsmiu;
figure;
semilogy(mse2);hold on;
semilogy(mse3);hold on;
semilogy(mse4);hold on;
  axis([0 1500 0.001 inf]);
ylabel('均方误差 ');
xlabel('迭代次数');
gtext('u=0.075');gtext('u=0.025');gtext('u=0.0075');


这是产生随机序例的函数:
function generate(N,M,Rb)
%clear;
%N=9500;
for i=1:N
    if(rand<0.5)
       train(i)=-1;
   else
       train(i)=1;
      
    end;
end;
%the length of info: M-N
% M=10500;
  for i=1:M-N
    if(rand<0.5)
       info(i)=-1;
    else
       info(i)=1;
    end;
end;
%the length of sending series :M
send=[train info];
%%%%%%%%%%%%%%%%%%%%%%%%%%设置码元速率%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Rb=1;     %%%%  原来的信息速率假设为1KHz
          %%%%  采样速率=码元速率Rb:   Rb=1kHz表示按原来信息速率发送
          %%%%  这里是以1kHz为基本单位,要求Rb>=1kHz
          %%%%  信道模型中也是以1kHz(1ms)为单位。
          %%%%  小于1kHz的码元速率是错误的。
  
len1=length(send);
for i=1:len1
          s(i*Rb)=send(i);
     for j=1:Rb-1
         s(i*Rb-j)=send(i);
     end;
end;
%xu for i=1:(M-N)
%xu          info1(i*Rb)=info(i);
%xu     for j=1:Rb-1
%xu        info1(i*Rb-j)=info(i);  
%xu      end;
%xu end;
%xu for i=1:N
%xu          train1(i*Rb)=train(i);
%xu    for j=1:Rb-1
%xu        train1(i*Rb-j)=train(i);
%xu    end;
%xu end;

save send;
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-2 09:19 , Processed in 0.062498 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表