当前位置: 首页 > news >正文

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

目录

1.算法仿真效果

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

3.MATLAB核心程序

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


1.算法仿真效果

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

GA优化曲线:

优化前后星座图对比

优化前后误码率对比

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

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

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

1. 具有整形增益。

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

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

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

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

   

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

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

3.MATLAB核心程序

................................................................
MAXGEN = 15;
NIND   = 20;
Nums   = 1; 
Chrom  = crtbp(NIND,Nums*10);%sh
Areas = [];
for i = 1:NumsAreas = [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;
endObjv  = (Js+eps);
gen   = 0; %%
while gen < MAXGEN  genPe0 = 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_077m

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

V

相关文章:

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

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; GA优化曲线&#xff1a; 优化前后星座图对比 优化前后误码率对比 仿真操作步骤…...

JavaScript系列(57)--工程化实践详解

JavaScript工程化实践详解 &#x1f3d7;️ 今天&#xff0c;让我们深入探讨JavaScript的工程化实践。良好的工程化实践对于构建可维护、高质量的JavaScript项目至关重要。 工程化基础概念 &#x1f31f; &#x1f4a1; 小知识&#xff1a;JavaScript工程化是指在JavaScript开…...

Linux-CentOS的yum源

1、什么是yum yum是CentOS的软件仓库管理工具。 2、yum的仓库 2.1、yum的远程仓库源 2.1.1、国内仓库 国内较知名的网络源(aliyun源&#xff0c;163源&#xff0c;sohu源&#xff0c;知名大学开源镜像等) 阿里源:https://opsx.alibaba.com/mirror 网易源:http://mirrors.1…...

【大数据技术】案例03:用户行为日志分析(python+hadoop+mapreduce+yarn+hive)

用户行为日志分析(python+hadoop+mapreduce+yarn+hive) 搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell) 搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) 本机PyCharm远程连接虚拟机Python 搭建完全分布式高可用大数据集群(MySQL+Hive)...

LeetCode 0680.验证回文串 II:两侧向中间,不同就试删

【LetMeFly】680.验证回文串 II&#xff1a;两侧向中间&#xff0c;不同就试删 力扣题目链接&#xff1a;https://leetcode.cn/problems/valid-palindrome-ii/ 给你一个字符串 s&#xff0c;最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串&#xff1a;如果能…...

第二十章 存储函数

目录 一、概述 二、语法 三、示例 一、概述 前面章节中&#xff0c;我们详细讲解了MySQL中的存储过程&#xff0c;掌握了存储过程之后&#xff0c;学习存储函数则肥仓简单&#xff0c;存储函数其实是一种特殊的存储过程&#xff0c;也就是有返回值的存储过程。存储函数的参数…...

架构规划之任务边界划分过程中承接分配

架构师在边界划分的过程中需要做什么事情呢&#xff1f;接下来&#xff0c;我们会讨论一些关于任务分配的 基础假设&#xff0c;以及由这些基础假设而带来的决策路径。 所谓任务边界划分&#xff0c;就是判定某个任务在多个承接方中&#xff0c;应该归属到哪个承接方的过程。…...

【C++】线程池实现

目录 一、线程池简介线程池的核心组件实现步骤 二、C11实现线程池源码 三、线程池源码解析1. 成员变量2. 构造函数2.1 线程初始化2.2 工作线程逻辑 3. 任务提交(enqueue方法)3.1 方法签名3.2 任务封装3.3 任务入队 4. 析构函数4.1 停机控制 5. 关键技术点解析5.1 完美转发实现5…...

vsnprintf的概念和使用案例

vsnprintf 是 C/C 标准库中用于格式化字符串的安全函数&#xff0c;属于 <stdio.h>&#xff08;C&#xff09;或 <cstdio>&#xff08;C&#xff09;头文件。它是 snprintf 的可变参数版本&#xff08;v 表示 va_list&#xff09;&#xff0c;允许通过 va_list 处理…...

解读隐私保护工具 Fluidkey:如何畅游链上世界而不暴露地址?

作者&#xff1a;Techub 独家解读 撰文&#xff1a;Tia&#xff0c;Techub News 隐私不只是个人权利的象征&#xff0c;更是我们迈向透明、信任未来的重要过渡桥梁。如果你还未意识到隐私的重要性&#xff0c;推荐阅读 KeyMapDAO 的文章《「被出卖的自由」&#xff1a;我到底该…...

Linux环境Kanass安装配置简明教程

Kanass是一款国产开源免费的项目管理软件&#xff0c;本文将介绍如何快速在linux centos环境下安装配置&#xff0c;以快速上手。 1. 安装 以下以linux centos7下安装为例。 下载&#xff0c;下载地址:Kanass - 下载&#xff0c;下载Linux安装包如tiklab-kanass-1.0.4.rpm&am…...

数据分析常用的AI工具

数据分析领域中常用的AI工具种类繁多&#xff0c;涵盖了从数据处理、分析到可视化和预测的各个环节。以下是一些常见且广泛应用的AI数据分析工具及其特点&#xff1a; 1. 数据处理与清洗工具 Python库&#xff1a;如PandasAI&#xff0c;集成了生成式AI能力&#xff0c;支持自…...

项目中常用中间件有哪些?分别起什么作用?

在项目开发中&#xff0c;常用的中间件包括消息中间件、缓存中间件、数据库中间件等&#xff0c;以下是一些常见的中间件及其作用&#xff1a; 消息中间件 Kafka&#xff1a;一般用于处理大规模的消息数据&#xff0c;具有高吞吐量、低延迟的特点&#xff0c;适用于日志收集、…...

kaggle视频行为分析1st and Future - Player Contact Detection

这次比赛的目标是检测美式橄榄球NFL比赛中球员经历的外部接触。您将使用视频和球员追踪数据来识别发生接触的时刻&#xff0c;以帮助提高球员的安全。两种接触&#xff0c;一种是人与人的&#xff0c;另一种是人与地面&#xff0c;不包括脚底和地面的&#xff0c;跟我之前做的这…...

1. junit5介绍

JUnit 5 是 Java 生态中最流行的单元测试框架&#xff0c;由 JUnit Platform、JUnit Jupiter 和 JUnit Vintage 三个子项目组成。以下是 JUnit 5 的全面使用指南及示例&#xff1a; 一、环境配置 1. Maven 依赖 <dependency><groupId>org.junit.jupiter</grou…...

(脚本学习)BUU18 [CISCN2019 华北赛区 Day2 Web1]Hack World1

自用 题目 考虑是不是布尔盲注&#xff0c;如何测试&#xff1a;用"1^1^11 1^0^10&#xff0c;就像是真真真等于真&#xff0c;真假真等于假"这个测试 SQL布尔盲注脚本1 import requestsurl "http://8e4a9bf2-c055-4680-91fd-5b969ebc209e.node5.buuoj.cn…...

Caxa 二次开发 ObjectCRX-1 踩坑:环境配置以及 Helloworld

绝了&#xff0c;坑是真 nm 的多&#xff0c;官方给的文档里到处都是坑。 用的环境 ObjectCRX&#xff0c;以下简称 objcrx。 #1 安装环境 & 参考文档的大坑 #1.1 Caxa 提供的文档和环境安装包 首先一定要跟 Caxa 对应版本的帮助里提供的 ObjectCRX 安装器 (wizard) 匹配…...

【自然语言处理(NLP)】生成词向量:GloVe(Global Vectors for Word Representation)原理及应用

文章目录 介绍GloVe 介绍核心思想共现矩阵1. 共现矩阵的定义2. 共现概率矩阵的定义3. 共现概率矩阵的意义4. 共现概率矩阵的构建步骤5. 共现概率矩阵的应用6. 示例7. 优缺点优点缺点 **总结** 目标函数训练过程使用预训练的GloVe词向量 优点应用总结 个人主页&#xff1a;道友老…...

bable-预设

babel 有多种预设&#xff0c;最常见的预设是 babel/preset-env&#xff0c;它可以让你使用最新的 JS 语法&#xff0c;而无需针对每种语法转换设置具体的插件。 babel/preset-env 预设 安装 npm i -D babel/preset-env配置 .babelrc 文件 在根目录下新建 .babelrc 文件&a…...

回顾生化之父三上真司的游戏思想

1. 放养式野蛮成长路线&#xff0c;开创生存恐怖类型 三上进入capcom后&#xff0c;没有培训&#xff0c;没有师傅手把手的指导&#xff0c;而是每天摸索写策划书&#xff0c;老员工给出不行的评语后&#xff0c;扔掉旧的重写新的。 然后突然就成为游戏总监&#xff0c;进入开…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例

目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码&#xff1a;冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...