基于遗传算法的64QAM星座图的最优概率整形matlab仿真,对比优化前后整形星座图和误码率

简介: 本内容主要探讨基于遗传算法(GA)优化的64QAM概率星座整形(PCS)技术。通过改变星座点出现的概率分布,使外圈点频率降低,从而减小平均功率、增加最小欧氏距离,提升传输性能。仿真使用Matlab2022a完成,展示了优化前后星座图与误码率对比,验证了整形增益及频谱效率提升效果。理论分析表明,Maxwell-Boltzman分布为最优概率分布,核心程序通过GA搜索最佳整形因子v,以蒙特卡罗方法估计误码率,最终实现低误码率优化目标。

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

GA优化过程:
cb10bbdb0a6fc40bd2e6b0072b353112_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

优化前后星座图对比:

15adddde5f73f5199975604c5f5791a6_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

(优化后,边缘的星座点会聚集到中心,所以整体看,星座点边缘区域会变小或者消失)

优化前后误码率对比:

4e1298426b43d820826ba2a344d247fa_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

仿真操作步骤可参考程序配套的操作视频。

2.算法涉及理论知识概要
64QAM 是一种高阶调制方式,星座图中有 64 个星座点,每个星座点对应 6 比特信息。传统的 64QAM 采用均匀分布。通过改变改变星座图不同位置符号出现的概率,让外圈星座点出现频率降低,有利于减小平均功率,相当于增加了最小欧氏距离,从而有更好的传输性能。这就是我们所说的概率星座整形(PCS)了。它究竟有什么好处呢?

  1. 具有整形增益。

  2. 有望达到更高的传输容量,显著提升频谱效率。

  3. 传输速率可以灵活调整,以完美适配不同的传输信道。

  4. 无须多种支持多种QAM映射,仅使用方形QAM调制,需调整整形系数

     PCS的关键在于如何对均匀概率的输出映射成非均匀概率幅度分布,而且该概率分布还应该是最优的。理论上可以证明Maxwell-Boltzman分布对于方形QAM整形是最优的概率分布。概率星座整形一般使用如下的公式完成:
    

f1141371c51311cbe989b024fd224fd9_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   参数v为整形因子。在本课题中,将通过GA优化算法,搜索最佳的参数v,进一步提升概率整形后的系统性能。以 64QAM 的误码率(BER)作为适应度函数。误码率越低,表明该概率整形因子  对应的星座点概率分布越优。在实际计算时,可通过蒙特卡罗仿真来估计误码率。具体步骤为:依据当前的  计算每个星座点的发送概率,生成大量发送符号,经过加性高斯白噪声(AWGN)信道传输,接收符号并进行解调,统计错误比特数,进而计算误码率。

   通过GA算法,获得最优的参数v,以降低 64QAM 的误码率。

3.MATLAB核心程序
```MAXGEN = 15;
NIND = 20;
Nums = 1;
Chrom = crtbp(NIND,Nums*10);

%sh
Areas = [];
for i = 1:Nums
Areas = [Areas,[0;0.25]];% 优化概率整形参数v
end
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];

gen = 0;
for a=1:1:NIND
%计算对应的目标值
X = rand(1,Nums)/10;%初始值
[epls] = func_obj(X);
E = epls;
Js(a,1) = E;
end

Objv = (Js+eps);
gen = 0;

%%
while gen < MAXGEN
gen
Pe0 = 0.998;
pe1 = 0.002;

  FitnV=ranking(Objv);    
  Selch=select('sus',Chrom,FitnV);    
  Selch=recombin('xovsp', Selch,Pe0);   
  Selch=mut( Selch,pe1);   
  phen1=bs2rv(Selch,FieldD);   

  for a=1:1:NIND  
      X     = phen1(a,:);
      %计算对应的目标值
      [epls]= func_obj(X);
      E       = epls;
      JJ(a,1) = E;
  end 

  Objvsel=(JJ);    
  [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
  gen=gen+1; 

  %保存参数收敛过程和误差收敛过程以及函数值拟合结论

  Error(gen) = mean(JJ) ;
  [V,I]      = min(JJ);

  VVV(gen)   = phen1(I,:);
  VVV2(gen)  = mean2(phen1) ;

end

figure;
plot(Error,'linewidth',2);
grid on
xlabel('迭代次数');
ylabel('遗传算法优化过程');
legend('Average fitness');

[V,I] = min(JJ);
VV = phen1(I,:);

save GA_OPT.mat Error VV

```

相关文章
|
13天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
12天前
|
数据可视化
基于MATLAB的OFDM调制发射与接收仿真
基于MATLAB的OFDM调制发射与接收仿真
|
15天前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
103 1
|
14天前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
|
13天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
107 14
|
12天前
|
监控
基于MATLAB/Simulink的单机带负荷仿真系统搭建
使用MATLAB/Simulink平台搭建一个单机带负荷的电力系统仿真模型。该系统包括同步发电机、励磁系统、调速系统、变压器、输电线路以及不同类型的负荷模型。
271 5
|
13天前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
|
16天前
|
机器学习/深度学习 运维 算法
【储能选址定容】基于多目标粒子群算法的配电网储能选址定容(Matlab代码实现)
【储能选址定容】基于多目标粒子群算法的配电网储能选址定容(Matlab代码实现)
104 4
|
15天前
|
机器学习/深度学习 算法 Java
基于灰狼优化算法(GWO)解决柔性作业车间调度问题(Matlab代码实现)
基于灰狼优化算法(GWO)解决柔性作业车间调度问题(Matlab代码实现)
|
16天前
|
算法 机器人 Serverless
【机器人路径规划】基于6种算法(黑翅鸢优化算法BKA、SSA、MSA、RTH、TROA、COA)求解机器人路径规划研究(Matlab代码实现)
【机器人路径规划】基于6种算法(黑翅鸢优化算法BKA、SSA、MSA、RTH、TROA、COA)求解机器人路径规划研究(Matlab代码实现)
175 2

热门文章

最新文章