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

目录

1.算法仿真效果

2.算法涉及理论知识概要

3.MATLAB核心程序

4.完整算法代码文件获得


1.算法仿真效果

matlab2022a仿真结果如下**(完整代码运行后无水印)**:

GA优化过程:

优化前后星座图对比:

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

优化前后误码率对比:

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

2.算法涉及理论知识概要

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

  1. 具有整形增益。

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

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

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

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

参数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 
0X_076m

4.完整算法代码文件获得

V

相关推荐
机器学习之心12 分钟前
多工况车速数据集训练BiLSTM-Attention用于车速预测,输出未来多个时间步车速,MATLAB代码
matlab·attention·bilstm·车速预测
jghhh012 小时前
燃料电池电源 Matlab 仿真方案
开发语言·matlab
wearegogog1233 小时前
用于脑电信号(EEG)分类的 SVM 分类器 Matlab 实现
支持向量机·matlab·分类
zhangfeng11335 小时前
openclaw skills 小龙虾技能 通讯仿真 matlab skill Simulink Agentic Toolkit,通过kimi找到,mcp通讯
开发语言·matlab·openclaw·通讯仿真
chao18984411 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
yongui4783418 小时前
基于 GA 优化的 BP 神经网络算法分析与 MATLAB 实现
神经网络·算法·matlab
rit843249919 小时前
基于 MATLAB 的坐标变换程序
开发语言·matlab
listhi52019 小时前
LTE标准下Turbo码编译码仿真
算法·matlab
fie888920 小时前
城市环境下车辆目标跟踪算法 MATLAB 实现
算法·matlab·目标跟踪
机器学习之心20 小时前
轴承剩余寿命预测 | 基于BP神经网络的轴承剩余寿命预测MATLAB实现!
人工智能·神经网络·matlab·轴承剩余寿命预测