1.算法描述
信道估计是通信系统接收机的重要功能模块,主要是用来估计信号所经历信道的冲击响应,并用于后续的信道均衡处理,以便消除多径信号混叠造成的ISI。
信道估计的方法有很多种,大体上可分为两类,一类是基于训练序列的信道估计,而另一类是信道的盲估计(自适应估计),其估计过程不依赖已知信息。常见通信系统的信道估计,绝大部分是基于训练序列的估计方法,这里面最最常用的两个信道估计算法就是LS算法和MMSE算法。LS是最小二乘、MMSE是最小均方误差,它们都是所谓的最优化准则,即得到最优信道估计所遵循的准则,有时也被称为代价函数。
均衡技术是对码间干扰进行适当处理,以补偿信道畸变的技术。通常把采用均衡技术来补偿码间干扰的处理器称为均衡器。设计了一种采用递归最小二乘的自适应算法的均衡滤波器,仿真结果显示均衡器可以降低码间干扰,降低误码率。
这种方法的原理就是在发射数据符号外,还需要发射前导(Preamble)或导频(pilot)信号;如最小二乘LS、最小均方误差MMSE等基于训练序列的信道估计算法被广泛应用于信道估计;
优点:训练符号能够提供较好的性能;
缺点:由于除了发射数据符号外,还需要发射前导或导频信号,由此训练序列过长会降低频谱效率;
LS 信道估计算法简单,但是对噪声敏感,尤其在深衰落信道中,LS 信道估计算法性能明显恶化。
MMSE 信道估计算法有效地抑制了噪声干扰,性能优于 LS 信道估计算法,但需求解矩阵的逆,复杂度较高,硬件难以实现。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
for j=1:length(SNR_in_dB) j %通过既有码间干扰又有白噪声信道 [y,len,h] = func_channel(info,SNR_in_dB(j)); %初始误码统计数 numoferr1=0; %从第len个码元开始为真实信号码元 for i=len+1:N+len decis = 2*[y(i)>=0]-1; %判断是否误码,统计误码码元个数 if decis~=info(i-5) numoferr1=numoferr1+1; end; end; %未经均衡器均衡,得到的误码率 Pe1(j)=numoferr1/N; %LS均衡,参考文献 %https://wenku.baidu.com/view/3fb6f52f195f312b3069a5a6.html Order = 5; z = func_LS(y,info,Order); %初始误码统计数 numoferr2=0; %从第len个码元开始为真实信号码元 for i=1:N decis(i) = 2*[z(i+Order)>=0]-1; %判断是否误码,统计误码码元个数 if decis(i)~=info(i) numoferr2=numoferr2+1; end; end; Pe2(j)=numoferr2/N; %DEF均衡 z = func_DEF(y(6:length(info)+5),info,h); decis = [2*[z>=0]-1]; %初始误码统计数 numoferr3=0; %从第len个码元开始为真实信号码元 for i=1:N if decis(i)~=info(i) numoferr3=numoferr3+1; end; end; Pe3(j)=numoferr3/N; %LMMSE均衡 z = func_LMMSE(y,h,SNR_in_dB(j)); decis = [2*[z>=0]-1]'; %初始误码统计数 numoferr4=0; %从第len个码元开始为真实信号码元 for i=1:N-5 if decis(i+5)~=info(i) numoferr4=numoferr4+1; end; end; Pe4(j)=numoferr4/N; end; figure; semilogy(SNR_in_dB,Pe1,'red*-'); hold on; semilogy(SNR_in_dB,Pe2,'b-s'); hold on; semilogy(SNR_in_dB,Pe3,'k--','linewidth',2); hold on; semilogy(SNR_in_dB,Pe4,'m->','linewidth',2); grid on legend('无均衡器','LS均衡器','DEF均衡器','LMMSE均衡器'); xlabel('SNR(dB)'); ylabel('error'); 01-139m
标签:误码率,end,算法,误码,估计,信道,LMMSE,LS,均衡 From: https://www.cnblogs.com/51matlab/p/17131776.html