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

📄 jh_rls.m

📁 LMS及RLS算法
💻 M
字号:
function [Pe1,Pe2,Pe3]=jh_RLS(snr_in_dB)
N=10000;
d=1;
Eav=10*d^2;
snr=10^(snr_in_dB/10);
sgma=sqrt(Eav/(8*snr));
M=16;
for k=1:N
    temp=rand;
    dsource(k)=1+floor(M*temp);
end
mapping=[-3*d, 3*d;
         -d,   3*d;
          d,   3*d;
         3*d,  3*d;
        -3*d,   d ;
          -d,   d ;
           d,   d ;
         3*d,   d ;
        -3*d,  -d ;
          -d,  -d ;
           d,  -d ;
         3*d,  -d ;
        -3*d, -3*d;
          -d, -3*d;
           d, -3*d;
         3*d, -3*d];
for k=1:N
    qam_sig(k,:)=mapping(dsource(k),:);
end
qam_sig_r=qam_sig(:,1);
qam_sig_i=qam_sig(:,2);
qam=qam_sig_r+i*qam_sig_i;
for k=3:N;
    qam_gr(k)=0.3*qam(k)+1*qam(k-1)+0.3*qam(k-2);
end

for k=1:N
    [noise0(1) noise0(2)]=gngauss(sgma);
    noise=noise0(1)+i*noise0(2);
    r(k)=qam_gr(k)+noise;
    r0(k)=qam(k)+noise;                 %无码间干扰时的输出   
end

r1=real(r);
r2=imag(r);

order=10;
u=0.999;
m1=0.001*snr;
p=1/m1*(1+i)*eye(order,order);
p1=real(p);
p2=imag(p);
error_s=0;
w=0.001*(1+i)*ones(1,order)';
w1=real(w);
w2=imag(w);

d0=zeros(1,N);
for k=order:N;
   d0(k)=qam(k-order+1);
end
d1=real(d0);
d2=imag(d0);
y=zeros(1,N);
for k=order:N;
        r11=r1(k:-1:(k-order+1))';
        k1=u^(-1).*p1*r11./(1+u^(-1).*r11'*p1*r11);
        e1(k)=d1(k)-w1'*r11;
        w1=w1+k1.*conj(e1(k));
        p1=u^(-1).*p1-u^(-1).*k1*r11'*p1;
        y1(k)=w1'*r11;
        r22=r2(k:-1:(k-order+1))';
        k2=u^(-1).*p2*r22./(1+u^(-1).*r22'*p2*r22);
        e2(k)=d2(k)-w2'*r22;
        w2=w2+k2.*conj(e2(k));
        p2=u^(-1).*p2-u^(-1).*k2*r22'*p2;
        y2(k)=w2'*r22;   
        e(k)=e1(k)+i*e2(k);
end
Pe1=0;
numoferr=0;
for k=1:N
    for l=1:M
        metrics(l)=(real(r0(k))-mapping(l,1))^2+(imag(r0(k))-mapping(l,2))^2;
    end
    [min_metric decis]=min(metrics);
    if decis~=dsource(k)
       numoferr=numoferr+1;
    end
end
Pe1=numoferr/N;         %%无码间干扰时的误码率

Pe2=0;
numoferr=0;
for k=2:N
    for l=1:M
        metrics(l)=(real(r(k))-mapping(l,1))^2+(imag(r(k))-mapping(l,2))^2;;
    end
    [min_metric decis]=min(metrics);
    if decis~=dsource(k-1)
       numoferr=numoferr+1;
    end
end
Pe2=numoferr/N;           %%均衡前误码率

Pe3=0;
numoferr=0;
for k=order:N
    for l=1:M
        metrics(l)=(y1(k)-mapping(l,1))^2+(y2(k)-mapping(l,2))^2;
    end
    [min_metric decis]=min(metrics);
    if decis~=dsource(k-order+1)
       numoferr=numoferr+1;
    end
end
Pe3=numoferr/N;          %%均衡后误码率

⌨️ 快捷键说明

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