《MATLAB环境下ISI信道仿真及自适应均衡器设计程序说明.pdf》由会员分享,可在线阅读,更多相关《MATLAB环境下ISI信道仿真及自适应均衡器设计程序说明.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MATLABMATLAB环境下环境下 ISIISI 信道仿真及自适应均衡器设计程序说明信道仿真及自适应均衡器设计程序说明一、系统模型统计误码率统计误码率X与Y比较X与Z比较信源XISI信道+Y自适应均衡器步长可调Z(0,2)高斯白噪声二、ISI 信道仿真及 LSM 算法自适应均衡器原理1、发送端和接收端滤波器的级联和在采样瞬间时的信道可用等效的离散时间 FIR 信道滤波器来表示,Xn=0 ,n=-5,-4,5。2、基于 MSE 准则的均衡器抽头系数的自适应算法为:ck1 ck ekyk其中ck代表抽头系数向量的估值,为迭代过程中的步长参数,ek为误差信号,yk代表在瞬时 k 包含均衡器中 2k
2、+1 接收信号值的行向量。误差信号ek表示为:ek ak zk;zk为均衡器输出,ak为已知信号序列。最初用一已知伪随机序列ak在信道上将这个自适应均衡器进行训练。在解调器端,均衡器用这个已知序列去调整它的系数,一旦初始调节完成,自适应均衡器就从一个训练模式切换到直接判决模式,这时:ek ak zk,式中ak是检测器的输出。为了确保收敛和在慢变化信道中好的跟踪能力,选择步长参数的一种经验公式是 15(2k 1)PR式中PR代表接收到的信号加噪声的功率,它可以从接收信号中估计出。三、仿真结果图四、结论分析从结果图中我们可以看出,在信噪比逐渐增大的过程中,未经均衡器均衡的差错率没有明显改善,可知系
3、统中始终存在码间干扰造成的误码;经均衡器均衡后的差错率则有明显改善。但我们同时也可以看到在信噪比较低情况下,均衡器均衡之后的误码率并没有明显改善,甚至没有未均衡的差错率低,这主要是因为噪声为随机信号,功率大时对源信号影响较大,而且均衡器不易跟踪;当我们把均衡器的步长调低后,跟踪能力增强,差错率降低。附源程序代码:clear;clc;echo off;close all;N=10000;%指定信号序列长度info=random_binary(N);%产生二进制信号序列SNR_in_dB=8:1:18;%AWGN信道信噪比for j=1:length(SNR_in_dB)y,len=channel
4、(info,SNR_in_dB(j);%通过既有码间干扰又有白噪声信道 numoferr=0;%初始误码统计数 for i=len+1:N+len,%从第 len 个码元开始为真实信号码元 if(y(i)0),%判决译码 decis=-1;else decis=1;end;if(decis=info(i-5),%判断是否误码,统计误码码元个数 numoferr=numoferr+1;end;end;Pe(j)=numoferr/N;%未经均衡器均衡,得到的误码率end;semilogy(SNR_in_dB,Pe,red*-);%未经均衡器,误码率结果图 hold on;delta_1=;%指定
5、自适应均衡器的步长delta_2=;%指定自适应均衡器的步长for j=1:length(SNR_in_dB)y=channel(info,SNR_in_dB(j);%通过信道 z=lms_equalizer(y,info,delta_1);%通过自适应均衡器,并设置步长为 numoferr=0;for i=1:N,if(z(i)0),decis=-1;else decis=1;end;if(decis=info(i),numoferr=numoferr+1;end;end;Pe(j)=numoferr/N;%经自适应均衡器均衡后,得到的误码率end;semilogy(SNR_in_dB,Pe
6、,blacko-);%自适应均衡器均衡之后,误码率结果图 hold on;for j=1:length(SNR_in_dB)y=channel(info,SNR_in_dB(j);%通过信道 z=lms_equalizer(y,info,delta_2);%通过自适应均衡器,并设置步长为 numoferr=0;for i=1:N,if(z(i)0),decis=-1;else decis=1;end;if(decis=info(i),numoferr=numoferr+1;end;end;Pe(j)=numoferr/N;%经自适应均衡器均衡后,得到的误码率end;semilogy(SNR_i
7、n_dB,Pe,);%自适应均衡器均衡之后,误码率结果图 hold on;xlabel(SNR in dB);ylabel(Pe);title(ISI 信道自适应均衡系统仿真);legend(未经均衡器均衡,经自适应均衡器均衡,步长detla=,.经自适应均衡器均衡,步长detla=);%产生二进制信源随机序列function info=random_binary(N)if nargin=0,%如果没有输入参数,则指定信息序列为10000 个码元 N=10000;end;for i=1:N,temp=rand;if(temp,info(i)=-1;%1/2的概率输出为-1 else info(
8、i)=1;%1/2的概率输出为 1 endend;%模拟既有码间干扰又有高斯白噪声的信道function y,len=channel(x,snr_in_dB)SNR=exp(snr_in_dB*log(10)/10);%信噪比真值转换sigma=1/sqrt(2*SNR);%高斯白噪声的标准差%指定信道的 ISI 参数,可以看出此信道质量还是比较差的actual_isi=0 ;len_actual_isi=(length(actual_isi)-1)/2;len=len_actual_isi;y=conv(actual_isi,x);%信号通过信道,相当于信号序列与信道模型序列作卷积%需要指出
9、,此时码元序列长度变为N+len-1,译码时我们从第 len 个码元开始到 N+len 个结束for i=1:2:size(y,2),noise(i)noise(i+1)=gngauss(sigma);%产生噪声end;y=y+noise;%叠加噪声%产生高斯白噪声function gsrv1,gsrv2=gngauss(m,sgma)if nargin=0,%如果没有输入实参,则均方为0,标准差为 1 m=0;sgma=1;elseif nargin=1,%如果输入实参为 1 个参数,则标准差为输入实参,均值为0 sgma=m;m=0;end;u=rand;z=sgma*(sqrt(2*lo
10、g(1/(1-u);u=rand;gsrv1=m+z*cos(2*pi*u);gsrv2=m+z*sin(2*pi*u);%LSM 算法自适应滤波器实现function z=lms_equalizer(y,info,delta)estimated_c=0 0 0 0 0 1 0 0 0 0 0;%初始抽头系数K=5;for k=1:size(y,2)-2*K,y_k=y(k:k+2*K);%获取码元,一次 11 个 z_k=estimated_c*y_k;%各抽头系数与码元相乘后求和 e_k=info(k)-z_k;%误差估计 estimated_c=estimated_c+delta*e_k*y_k;%计算校正抽头系数 z(k)=z_k;%均衡后输出的码元序列end;