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

简简单单做算法發表於2024-05-24

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

2.演算法執行軟體版本

MATLAB2022a

3.演算法理論概述

16QAM(Quadrature Amplitude Modulation,正交幅度調製)是一種高效的數字調製技術,能夠在相同的頻寬內傳輸比傳統調製方式更多的資訊。解調是通訊系統中從接收到的訊號中恢復原始資訊的關鍵步驟。基於BP(Back Propagation,反向傳播)神經網路的16QAM解調演算法,是利用人工神經網路強大的非線性對映和學習能力,直接從接收到的複數訊號中估計出傳送的16QAM符號,具有良好的抗噪效能和靈活性。

BP神經網路是一種多層前饋網路,它包括輸入層、隱藏層和輸出層。在解調16QAM訊號的應用中,輸入層接收接收到的複數訊號樣本,輸出層則輸出對應的最可能的16QAM符號估計。訓練過程中,透過調整網路權重和偏置,使得網路輸出儘可能接近實際的符號標籤,以此達到解調的目的。

訓練階段:利用大量已知的16QAM符號及其對應的接收訊號樣本,透過反向傳播演算法不斷調整網路引數,直至網路輸出誤差收斂到一個可接受的範圍。

測試階段:在訓練完成後,將未參與訓練的測試集訊號輸入網路,評估網路的解調效能,包括誤位元速率(BER)、符號錯誤率(SER)等指標。

4.部分核心程式

% 第一部分:載入並視覺化資料
 
real1 = [-3 -3 -3 -3 -1 -1 -1 -1 +3 +3 +3 +3 +1 +1 +1 +1]./sqrt(10);
imag1 = [-3 -1 +3 +1 -3 -1 +3 +1 -3 -1 +3 +1 -3 -1 +3 +1]./sqrt(10);
 
IQmap = real1'+sqrt(-1)*imag1';
 
for ij = 1:length(SNR)
    ij
    for j = 1:20
        signal= round(rand(1,60000));
        Stx   = Modulator(signal,K);  
        Srx   = awgn(Stx,SNR(ij),'measured');
..................................................................
        
        %為每個神經網路尋找最佳超引數組合
        [accuracy,yfit] = func_ANN_qpsk(Si, Sh, Nlabel, lambda, IQmap, SrxT, StxT, SrxV, StxV);
        err(ij,j)=1-accuracy/100;
    end
end
 
 
% 呼叫函式繪製星座圖,展示資料的10%
func_constellation(Srx,Stx,0.5)  
 
figure;
semilogy(SNR,mean(err,2),'b-o');
grid on
xlabel('SNR');
ylabel('誤位元速率');
legend('16QAM誤位元速率');
 
 
figure
plot(yfit,'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
xlabel('訓練迭代次數');
ylabel('神經網路訓練曲線');

  

相關文章