% -----------實值信號~均衡器 ----------------% clear all; close all; %% -----------實值信號~均衡器----------------% % ----生成2PAM信號,點數為Num------- Num=3e3; Xn=rand(1,Num); Xn(Xn>=0.5)=1; Xn (Xn<0.5)=-1; %% ----經過信道,并加噪------- H=[0.005,0.009,-0.024,0.854,-0.218,0.049,-0.016]; %電話信道系數矩陣,長度為7. H(z)=0.005+0.009*(z^-1)-0.024*(z^-2)+...-0.016*(z^-6)、 Yn=filter(H,1,Xn);% 通過信道未加噪聲序列,長度Num+6 SNR=20; sig=awgn(Yn,SNR); %加噪SNR=20dB W=[0,0,0,1,0,0,0]; % 初始化均衡濾波器系數,長度為7 Y=[0,0,0,0,0,0,0]; % 長度為7 Lf=7; mu=0.0008; R2=1; %恒模常量,2PAM for m=1:1:Num % Num+6卷積后Yn的長度 %------經過濾波器模塊------ Y=[sig(m) Y(1:6)]; s= Y(Lf:-1:1)*W(1:Lf).'; X(m)=s; %------判決模塊------ a(m)=1; if X(m)<=0 a(m)=-1; end %------誤差信號計算模塊------ En=s *(s*s-R2); %------迭代模塊(系數更新)------ W=W-mu*En*Y(Lf:-1:1); end % ----- 計算誤碼率----- j=0; l=0; for k=1:Num-Lf+1 if a(k+Lf-1)==Xn(k) l=l+1; else j=j+1; % 計算錯誤的數量 C(j)=k; % 計算出錯位置 end end BER=j/( Num-Lf+1); %% ------------------程序后處理---------------------
|