基於BP神經網路的64QAM解調演算法matlab效能模擬

简简单单做算法發表於2024-06-22

1.演算法執行效果圖預覽

2.演算法執行軟體版本

MATLAB2022A

3.部分核心程式

% 第一部分:載入並視覺化資料
% load data.mat
real1 = [-7 -7 -7 -7 -7 -7 -7 -7 -5 -5 -5 -5 -5 -5 -5 -5 ...
         -1 -1 -1 -1 -1 -1 -1 -1 -3 -3 -3 -3 -3 -3 -3 -3 ...
         +7 +7 +7 +7 +7 +7 +7 +7 +5 +5 +5 +5 +5 +5 +5 +5 ...
         +1 +1 +1 +1 +1 +1 +1 +1 +3 +3 +3 +3 +3 +3 +3 +3 ]./sqrt(42);
    
imag1 = [-7 -5 -1 -3 +7 +5 +1 +3 -7 -5 -1 -3 +7 +5 +1 +3 ...
         -7 -5 -1 -3 +7 +5 +1 +3 -7 -5 -1 -3 +7 +5 +1 +3 ...
         -7 -5 -1 -3 +7 +5 +1 +3 -7 -5 -1 -3 +7 +5 +1 +3 ...
         -7 -5 -1 -3 +7 +5 +1 +3 -7 -5 -1 -3 +7 +5 +1 +3 ]./sqrt(42);
 
IQmap = real1'+sqrt(-1)*imag1';
 
for ij = 1:length(SNR)
    ij
    for j = 1:20
.......................................................
        % 資料劃分比例
        divT = 0.05; % 訓練資料佔全部資料的20%
        divV = 0.2; % 驗證資料佔全部資料的10%
        % 分割訓練集和驗證集
        SrxT = Srx(1,1:floor(divT*length(Srx)));% 訓練集訊號
        StxT = Stx(1,1:floor(divT*length(Stx)));% 訓練集期望結果
        SrxV = Srx(1  ,floor(divT*length(Srx))+1:floor((divT+divV)*length(Srx)));% 驗證集訊號
        StxV = Stx(1  ,floor(divT*length(Stx))+1:floor((divT+divV)*length(Stx)));% 驗證集期望結果
        
        [accuracy,yfit] = func_ANN_QAM(Si, Sh, Nlabel, lambda, IQmap, SrxT, StxT, SrxV, StxV);
        err(ij,j)=1-accuracy/100;
    end
end
 
func_constellation(Srx,Stx,0.5)  
 
figure;
semilogy(SNR,mean(err,2),'b-o');
grid on
xlabel('SNR');
ylabel('誤位元速率');
legend('64QAM誤位元速率');
 
 
figure
plot(yfit,'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
xlabel('訓練迭代次數');
ylabel('神經網路訓練曲線');
143

  

4.演算法理論概述

64QAM是一種高效的數字調製技術,它透過將6個位元對映到64個不同的複數符號上,以實現高資料傳輸速率。然而,在通訊中,由於通道噪聲和多徑效應,需要解調器恢復原始的位元序列。基於BP(Backpropagation)神經網路的64QAM解調演算法,是一種利用神經網路的非線性對映和學習能力,從失真的接收訊號中得到原始訊號的技術。

BP神經網路是一種多層前饋網路,透過反向傳播演算法進行學習和最佳化。在64QAM解調應用中,神經網路的目標是學習從接收到的失真訊號到原始位元序列的對映關係。

基於BP神經網路的64QAM解調演算法,透過神經網路的學習能力,能夠有效地從受噪聲影響的接收訊號中恢復出原始的位元資訊,相較於傳統的解調方法,它在處理非線性失真和複雜通道條件時表現出了更強的適應性和魯棒性。

相關文章