星座圖整形技術在光纖通訊中的matlab效能模擬,分別對比標準QAM,機率整形QAM以及幾何整形QAM

我爱C编程發表於2024-10-02

1.演算法模擬效果

matlab2022a模擬結果如下(完整程式碼執行後無水印):

2.演算法涉及理論知識概要

星座圖整形技術(Constellation Shaping Techniques)是現代光纖通訊系統中提升資料傳輸效率的關鍵技術之一,透過最佳化星座點的佈局和調製符號的使用機率,能在不增加系統功率或頻寬的前提下,顯著提高系統的譜效率和誤位元速率效能。下面將從原理角度深入對比標準QAM(Quadrature Amplitude Modulation)、機率整形QAM(Probabilistic Shaping QAM)以及幾何整形QAM(Geometric Shaping QAM),

2.1 標準QAM

標準QAM是一種廣泛使用的多進位制調製技術,它透過在兩個正交載波上同時傳輸多個離散的振幅水平,以達到高資料速率傳輸的目的。對於一個M-QAM星座圖,有M=I2個星座點,其中I是每個軸上的星座點數。每個星座點代表一個複數值,通常按照等邊網格排列。標準QAM的調製與解調過程遵循等機率原則,即所有星座點被使用的機率相同。

2.2 機率整形QAM(PS-QAM)

機率整形QAM透過改變各個星座點的使用機率,使得具有較低能量的符號出現得更頻繁,從而降低整個系統的平均能量,進而提高訊號的傳輸效率。這一過程實際上是對訊號進行軟決策前向糾錯編碼(FEC)之前的一種非均勻對映。機率整形的核心是利用非均勻的符號分佈來逼近容量極限,通常採用高斯分佈,因為高斯分佈是最接近夏農極限的分佈。

2.3 幾何整形QAM(GS-QAM)

幾何整形QAM則是直接在星座圖的幾何結構上進行最佳化,透過調整星座點的位置,使得相鄰點之間的距離最大化,以此來減少符號間的相互干擾,提高抗噪聲效能。這種技術不改變符號的使用機率,而是透過最佳化星座點佈局來改善系統的效能。

M-QAM星座圖中,最佳化的目標可以是最大化最小歐氏距離:

幾何整形的最佳化問題可以轉化為一個組合最佳化問題,例如透過遺傳演算法、模擬退火等全域性最佳化技術尋找最優星座點佈局。

標準QAM因其簡單性和廣泛的應用基礎,在很多系統中仍佔有一席之地。機率整形QAM更適合對能效有嚴格要求的長距離光纖通訊系統。幾何整形QAM在對抗通道干擾方面有獨特優勢,適用於干擾嚴重的通訊環境。

3.MATLAB核心程式

   %GMI
    for k=1:1:LEN                          
        y_k = Re_PS_QAMdata(k,1);
        y_k_bit = PS_randomData(k,1);
 
        q_ch_con_pro = func_pro(PS_QAMdata,Re_PS_QAMdata(1:length(PS_QAMdata)),y_k,x,LEN);%分母條件機率
        denominator = sum(q_ch_con_pro.*px);
 
        for i = 1:1:log2(M)                  
            bit_temp = bitget(y_k_bit,i);       
            if bit_temp ==0
               x_bit = x_bit_0(:,i);
               px_bit =  px_bit_0(:,i);
            else
                x_bit = x_bit_1(:,i);
                px_bit = px_bit_1(:,i);          
            end
            % 分子條件機率 
            q_ch_con_pro_bit = func_pro(PS_QAMdata,Re_PS_QAMdata(1:length(PS_QAMdata)),y_k,x_bit,LEN);
            numerator = sum(q_ch_con_pro_bit.*px_bit);
 
            GMI_temp1 = log2(numerator/denominator);
            GMI_bit(i,1) = GMI_temp1;
        end
        GMI_temp2(k,1) = sum(GMI_bit);
        if isnan(GMI_temp2(k,1))==1
           GMI_temp2(k,1) =0; 
        end
    end
    % 計算GMI總和
    GMI_symbol  = sum(GMI_temp2);
    GMI         = Hx + GMI_symbol/LEN;
    % 儲存最小的GMI或調製階數的對數
    GMI2(ij,ll) = min(GMI,log2(M));
0X_066m

  

相關文章