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('神經網路訓練曲線');