基于瑞丽多径信道的无线通信信道均衡算法matlab仿真,对比MMSE,ZF-DFE,MMSE-DFE

目录

1.算法仿真效果

2.算法涉及理论知识概要

3.MATLAB核心程序

4.完整算法代码文件


1.算法仿真效果

matlab2022a仿真结果如下:

2.算法涉及理论知识概要

        信道均衡(Channel equalization)是指为了提高衰落信道中的通信系统的传输性能而采取的一种抗衰落措施。它主要是为了消除或者是减弱宽带通信时的多径时延带来的码间串扰(ISI)问题。其机理是对信道或整个传输系统特性进行补偿,针对信道恒参或变参特性,数据速率大小不同,均衡有多种结构方式。信道均衡技术(Channel equalization)是指为了提高衰落信道中的通信系统的传输性能而采取的一种抗衰落措施。它主要是为了消除或者是减弱宽带通信时的多径时延带来的码间串扰(ISI)问题。

       信号经由发射机发射,射频信号在空间中传播(即无线信道中传播),经散射、折射、反射到达接收机后形成多径传输,多径传输信号会在信号接收机处叠加,接收信号与原信号相比其幅值与相位均会发生变化,其接收机信号强度和相位可用符合统计学分布的信道模型进行描述,目前常用的信道模型主要包括:瑞丽信道模型、莱斯信道模型,两者的定义如下:

1.瑞丽信道模型

       瑞丽信道模型适用于没有直达波到达接收机的情况,也就是说,接收设备与发射设备之间不共视(视距外),适用于对流层散射等情况,该信道模型的概率分布函数符合瑞丽分布。

2.莱斯信道模型

      与瑞丽模型相反,莱斯信道适用于存在直达波到达接收机的情况,即存在一条主路径,通过主路径传输过来被接收的信号为一个稳定幅度Ak和相位φk,其余多径传输过来的信号仍如“瑞利衰落概率模型”所述。

3.ZF均衡

      ZF均衡算法是一种根据峰值失真准则推导而来的线性均衡算法。将OFDM系统接收端的频域输出方程组用矩阵表示为
Y=HX+W
       其中W为加性高斯白噪声。为了得到发送端的发送信号X,最简单的实现方法是将Y乘以矩阵的 逆,即:

       ZF算法有个很大的缺点,没有对噪声进行消除,反而会放大噪声,当信噪比比较低时,性能会非常不好。

4. mmse
      mimo系统通过在不同天线上发送相互独立的数据流显著提高系统的频谱效率,接收端可以采用线性或者非线性的方式进行mimo信号的检测。MMSE能够最大化检测后的SINR(Signal to Interference plus Noise Ratio,干扰信噪比,即期望信号与无用噪声的比值)。即,MMSE检测是期望最小化噪声干扰。

3.MATLAB核心程序

.........................................................................
      %MMSEDFE
      R_dfe = P_s*(U_dfe*U_dfe')+C_w;
      p_dfe = P_s^2*U_dfe*e_dfe;
      c_dfe_mmse_ff=R_dfe\p_dfe;
      c_dfe_mmse_fb = -c_dfe_mmse_ff'*U(:,1:k1);
      errors = 0;
      Symbols_dfe_mmse = zeros(Nbits,1);
      for ii_n = 0:Nbits-1
          %Decision variable
          Symbols_dfe_mmse_padded=[zeros(k1,1);Symbols_dfe_mmse]; 
          Z = c_dfe_mmse_fb*Symbols_dfe_mmse_padded(ii_n+1:ii_n+length(c_dfe_mmse_fb),:) + c_dfe_mmse_ff'*Vec_2(1+ii_n*m:L_o+ii_n*m);
          dist = abs(Constellation - Z);
          [~,hard_dec] = min(dist);
          Symbols_dfe_mmse(1+ii_n) = Constellation(hard_dec);
          if(abs(Symbols_dfe_mmse(1+ii_n)-Vec_1(1+ii_n))==2)
              errors=errors+1;
          elseif(abs(Symbols_dfe_mmse(1+ii_n)-Vec_1(1+ii_n))>2)
              errors=errors+2;
          end
      end
      BER_MMSEDFE(ik) =  BER_MMSEDFE(ik) + errors/(2*length(Vec_1));

.........................................................................
figure;
semilogy(SNRs,BER_mmse,'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on
semilogy(SNRs,BER_ZFDFE,'-mo',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.5,0.9,0.0]);
hold on
semilogy(SNRs,BER_MMSEDFE,'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
grid on
xlabel('SNR (dB)')
ylabel('BER')
legend('MMSE','ZF-DFE','MMSE-DFE');
A535

4.完整算法代码文件

V

猜你喜欢

转载自blog.csdn.net/hlayumi1234567/article/details/129844208