移动通信系统的LMS自适应波束成形技术matlab仿真

75 阅读4分钟

1.算法运行效果图预览

1.jpeg

2.jpeg

3.jpeg

4.jpeg

5.jpeg  

2.算法运行软件版本

matlab2022a

 

3.算法理论概述

        在移动通信系统中,由于信号传播环境的复杂性,通信信号受到多径效应、干扰和噪声的影响,导致信号质量下降。自适应波束成形技术可以在多天线接收端对信号进行处理,以增强感兴趣的信号,并抑制不需要的干扰和噪声。

 

        自适应波束成形技术的核心思想是通过调整多个天线的权重系数,使得在特定方向上的信号增益最大化,同时减小其他方向上的信号增益。其中,最小均方(LMS)算法是一种常用的自适应算法,用于计算权重系数。以下是LMS自适应波束成形的基本原理:

05ef3ffcf1647bf47cfa866a9e2f8b5f_82780907_202310272350150922675325_Expires=1698422415&Signature=xxJxqqVfVRTRF6HGO8sJXgSctZs%3D&domain=8.png  

LMS自适应波束成形技术的实现过程包括以下步骤:

 

数据采集: 从多个天线接收信号,并对信号进行预处理,如去除直流分量等。

 

初始化权重: 初始时,设置权重向量的初始值,通常为随机值或单位向量。

 

计算输出: 根据当前权重向量和接收信号计算输出信号。

 

计算误差: 计算期望响应与实际输出之间的误差信号。

 

更新权重: 使用LMS算法更新权重向量的系数。

 

重复迭代: 重复进行2-5步骤,直至误差信号达到满意的水平或达到预设的迭代次数。

 

LMS自适应波束成形技术在移动通信系统中有广泛的应用,包括但不限于以下领域:

 

无线通信: 在多天线接收端,通过抑制干扰和多径效应,提高信号质量和通信效率。

无线局域网(WLAN): 用于提升Wi-Fi信号覆盖范围和稳定性。

无线传感器网络: 用于在复杂的信号环境中,准确地接收和识别传感器数据。

 

       LMS自适应波束成形技术是一种重要的信号处理方法,通过调整天线的权重系数,实现对特定方向上信号的增强和干扰的抑制。在移动通信系统中,它可以显著提升信号的质量和可靠性,适用于多种应用场景。

 

 

 

 

4.部分核心程序 `idxx=0;

while idxx<20

.....................................................................

   

    %信道生成

 

    receivedW = collectPlaneWave(GM.BSarray, [y_1*(1/sqrt(path_loss_t1)) y_2*(1/sqrt(path_loss_t2)) y_3*(1/sqrt(path_loss_i1)) y_3*(1/sqrt(path_loss_i2))], [t1Angles' t2Angles' i1Angles' i2Angles'], Pars.fc);

 

    %添加噪声

    chOut = awgn(receivedW, snr, 'measured');

 

     %在终端1上没有波束赋形的情况下计算BER

     subplot(3,2,3);

     title='终端1上没有波束赋形的星座图';

     bits=func_OFDM_demod(y_ofdm,chOut(:,end),NOrder,true,title);

     [numbError,ratio]=biterr(x_1,bits);

 

    

     %在终端2上没有波束赋形的情况下计算BER

     subplot(3,2,4);

     title='终端2上没有波束赋形的星座图';

     bits=func_OFDM_demod(y_ofdm,chOut(:,end),NOrder,true,title);

     [numbError,ratio]=biterr(x_2,bits);

 

     %相移波束赋形

 

    % 终端1通过PhaseShiftBeamformer进行波束赋形

    beamformerV1 = phased.PhaseShiftBeamformer('SensorArray',GM.BSarray,'OperatingFrequency',Pars.fc,'PropagationSpeed',Pars.c,'Direction',t1Angles','WeightsOutputPort',true);

    [y1,w1]      = beamformerV1(chOut);

     %在终端1上使用相移波束赋形的情况下计算BER

    subplot(3,2,5);

    title='终端1上使用相移波束赋形的星座图';

    bits=func_OFDM_demod(y_ofdm,y1,NOrder,true,title);

    [numbError,ratio]=biterr(x_1,bits);

 

    

    % 终端2通过PhaseShiftBeamformer进行波束赋形

    beamformerV2 = phased.PhaseShiftBeamformer('SensorArray',GM.BSarray,'OperatingFrequency',Pars.fc,'PropagationSpeed',Pars.c,'Direction',t2Angles','WeightsOutputPort',true);

    [y2,w2] = beamformerV2(chOut);

 

 

     %使用LMS算法进行波束赋形

    subplot(3,2,6);

    title='终端2上使用相移波束赋形的星座图';

    bits=func_OFDM_demod(y_ofdm,y2,NOrder,true,title);

    [numbError,ratio]=biterr(x_2,bits);

 

   

 

    figure(2);

    subplot(2,2,[1,2]);

    polarplot( deg2rad(az_t1),t1_dist_BS/max(t1_dist_BS,t2_dist_BS), 'or','LineWidth',1.5)

    hold on

    polarplot( deg2rad(az_t2),t2_dist_BS/max(t1_dist_BS,t2_dist_BS),'ob','LineWidth',1.5)

    hold on

 

    H=pattern(GM.BSarray,Pars.fc,[-180:180],el_t1,'PropagationSpeed',Pars.c,'Type','power','CoordinateSystem','polar','Weights',conj(w1));

    hold on

    polarplot(H,'r')

 

    H=pattern(GM.BSarray,Pars.fc,[-180:180],el_t2,'PropagationSpeed',Pars.c,'Type','power','CoordinateSystem','polar','Weights',conj(w2));

 

    hold on

    polarplot(H,'b')

  

  

   

    %计算LMS权重

    optimalWeight1 = func_LMS(chOut,y_1,numArray); 

    optimalWeight2 = func_LMS(chOut,y_2,numArray);  

 

   

    %将接收信号与权重相乘

    y1=chOut*((optimalWeight1));

    y2=chOut*((optimalWeight2));    

   

    %在终端1上使用LMS波束赋形的情况下计算BER

    subplot(2,2,3);

    title='终端1上使用LMS的星座图';

     bits=func_OFDM_demod(y_ofdm,(y1),NOrder,true,title);

    [numbError,ratio]=biterr(x_1,bits);

 

   

    %在终端2上使用LMS波束赋形的情况下计算BER

    subplot(2,2,4);

    title='终端2上使用LMS的星座图';

    bits=func_OFDM_demod(y_ofdm,(y2),NOrder,true,title);

    [numbError,ratio]=biterr(x_2,bits);

 

    pause(1);

 

end`