目录
1.算法描述
2.仿真效果预览
3.MATLAB核心程序
4.完整MATLAB
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
4.完整MATLAB
V