m基于深度学习的16QAM调制解调系统频偏估计和补偿算法matlab仿真

90 阅读2分钟

1.算法仿真效果

matlab2022a仿真结果如下:

1.jpeg

2.jpeg

3.jpeg

4.jpeg

5.jpeg  

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

        在通信系统中,载波频率偏差(频偏)会导致接收信号与本地参考载波之间的相位差变化,严重影响调制信号的正确解调。对于16-QAM这类高级调制方案而言,频偏补偿至关重要。深度学习技术能够通过学习信号特性来实现精准的频偏估计。

6.png

7.png  

          上述简化了频偏估计和补偿的实际操作,真实的深度学习模型可能会更复杂,并且会考虑到噪声、多径效应等因素的影响。此外,实际应用中可能会利用卷积神经网络结合循环神经网络(RNN)或是长短时记忆网络(LSTM)等架构,以捕捉信号的时间动态特性。

 

3.MATLAB核心程序 `global Fs;

global LEN;

global K;

 

K            = 4;               %调制阶数

SNR          = [0:2:30];            %信噪比范围0~30

OFFSET       = 6;%频偏范围0~10Hz

LEN          = 2000;

Fs           = 1e4;

t            = [1:LEN/K]/Fs;

 

for i = 1:length(SNR)

    i

    for j = 1:10

        [i,j]

        %产生信号

        signal                  = round(rand(1,LEN));

        signal_modulated1       = Modulator(signal,K);        

        signal_receive1         = awgn(signal_modulated1,SNR(i),'measured');

        signal_receive2         = signal_receive1.exp(sqrt(-1)2piOFFSET*t );

        

        

        offset2   = func_phase_est_dnn(signal_receive2);%基于深度学习的相位估计

        

        RR        = signal_receive2.exp(-sqrt(-1)2pimean2(offset2)*t);

        %加相位补偿

        output    = DeModulator(RR,K);

        

        msgr      = ones(size(output));

        idx       = find(output<=0);

        msgr(idx) = 0;

        

        len         = length(find(signal==msgr));

        errrate(i,j)= 1-len/length(signal);

        %没有相位补偿

        output2     = DeModulator(signal_receive2,K);

        

        msgr2       = ones(size(output2));

        idx2        = find(output2<=0);

        msgr2(idx2) = 0;

        

        len2      = length(find(signal==msgr2));

        errrate2(i,j)= 1-len2/length(signal);

 

    end

end

 

figure;

semilogy(SNR,mean(errrate2,2),'b-o');

hold on

semilogy(SNR,mean(errrate,2),'r-s');

grid on

xlabel('SNR');

ylabel('误码率');

legend('16QAM无频偏补偿误码率','16QAM频偏补偿误码率');`