📄 jh_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 + -