1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印):

1.jpeg2.jpeg3.jpeg

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的调制与解调过程遵循等概率原则,即所有星座点被使用的概率相同。

4.png

2.2 概率整形QAM(PS-QAM) 概率整形QAM通过改变各个星座点的使用概率,使得具有较低能量的符号出现得更频繁,从而降低整个系统的平均能量,进而提高信号的传输效率。这一过程实际上是对信号进行软决策前向纠错编码(FEC)之前的一种非均匀映射。概率整形的核心是利用非均匀的符号分布来逼近容量极限,通常采用高斯分布,因为高斯分布是最接近香农极限的分布。

5.png

2.3 几何整形QAM(GS-QAM) 几何整形QAM则是直接在星座图的几何结构上进行优化,通过调整星座点的位置,使得相邻点之间的距离最大化,以此来减少符号间的相互干扰,提高抗噪声性能。这种技术不改变符号的使用概率,而是通过优化星座点布局来改善系统的性能。

  在M-QAM星座图中,优化的目标可以是最大化最小欧氏距离:

6.png

   几何整形的优化问题可以转化为一个组合优化问题,例如通过遗传算法、模拟退火等全局优化技术寻找最优星座点布局。

   标准QAM因其简单性和广泛的应用基础,在很多系统中仍占有一席之地。概率整形QAM更适合对能效有严格要求的长距离光纤通信系统。几何整形QAM在对抗信道干扰方面有独特优势,适用于干扰严重的通信环境。

3.MATLAB核心程序

    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