📄 jh_lms.m
字号:
function [Pe1,Pe2,Pe3]=jh_LMS(snr_in_dB)
snr_in_dB=30;
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=11; %均衡器阶数
error_s=zeros(1,N);
w=0.001*(1+i)*ones(1,order)';
w1=real(w);
w2=imag(w);
h=cov(r.');
u=1/(10*trace(h));
%isi=[0.3,0.9,0.3]; %信道特性3
%M0=conv(x,isi);
%M=M0(1:N);
for k=order:N;
d0(k)=qam(k-order+1); %均衡器理想输出
end
d1=real(d0);
d2=imag(d0);
for k=order:N
r11=r1(k:-1:(k-order+1))';
y1(k)=w1'*r11;
e1(k)=d1(k)-y1(k);
w1=w1+u*r11.*conj(e1(k));
r22=r2(k:-1:(k-order+1))';
y2(k)=w2'*r22;
e2(k)=d2(k)-y2(k);
w2=w2+u*r22.*conj(e2(k));
e(k)=e1(k)+i*e2(k);
y(k)=y1(k)+i*y2(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 + -