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

201 阅读2分钟

1.算法仿真效果

matlab2022a仿真结果如下:

cd13cb650cf8ad8d7c38fad234d0c98c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

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

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

 

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

 

1.瑞丽信道模型

 

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

 

2.莱斯信道模型

 

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

 

3.ZF均衡

 

      ZF均衡算法是一种根据峰值失真准则推导而来的线性均衡算法。将OFDM系统接收端的频域输出方程组用矩阵表示为

Y=HX+W

       其中W为加性高斯白噪声。为了得到发送端的发送信号X,最简单的实现方法是将Y乘以矩阵的 逆,即:

33f8ad662f46a74c7d672fdf97e07ff2_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png  

3.MATLAB核心程序 `%MMSEDFE

      R_dfe = P_s*(U_dfe*U_dfe')+C_w;

      p_dfe = P_s^2U_dfee_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_fbSymbols_dfe_mmse_padded(ii_n+1:ii_n+length(c_dfe_mmse_fb),:) + c_dfe_mmse_ff'Vec_2(1+ii_nm:L_o+ii_nm);

          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');`