星座图整形技术在光纤通信中的matlab性能仿真,分别对比标准QAM,概率整形QAM以及几何整形QAM

news/2024/12/22 2:52:16/文章来源:https://www.cnblogs.com/51matlab/p/18445298

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核心程序

   %GMIfor 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 ==0x_bit = x_bit_0(:,i);px_bit =  px_bit_0(:,i);elsex_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;endGMI_temp2(k,1) = sum(GMI_bit);if isnan(GMI_temp2(k,1))==1GMI_temp2(k,1) =0; endend% 计算GMI总和GMI_symbol  = sum(GMI_temp2);GMI         = Hx + GMI_symbol/LEN;% 存储最小的GMI或调制阶数的对数GMI2(ij,ll) = min(GMI,log2(M));
0X_066m

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/807197.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用难测的期待去对抗既定的焦虑和迷茫

大三到今天,经历了很多,不管是两次开发实习,还是一边秋招一边考公,或是毕业一个月后被鸽转正,又或是无数次的面试和考试,无数次的高铁和大巴,无数次的破而后立......都让我改变了此前狭隘的看法。回顾以往,其实我从很早以前就觉得路好像是直来直去的,一眼能看到底部,…

基于无线传感器网络的节点分簇算法matlab仿真

1.程序功能描述 对传感器网络进行分簇,在分簇过程中考量的有节点能量状态、节点拓扑位置、孤立节点删除等条件。与LEACH算法比较,对比如下几个方面指标: 1.网络从初始状态直到首个节点因能量耗尽而死亡的持续时间。 2.显示了随着时间的变化,一些节点开始死亡,整个网…

《Java 高级篇》八:新特性

Java 中的一些新特性:Lambda 表达式、函数式接口、Stream API。Author: ACatSmiling Since: 2024-10-01Lambda 表达式 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一…

高级语言程序设计第二次作业

这个作业属于哪个课程 2024高级语言程序设计 (福州大学 - 计算机与大数据学院)这个作业要求在哪里 高级语言程序设计课程第二次个人作业学号 052205124姓名 林宇作业内容: 1.编写并运行书本第3章3.11 编程练习题目中的第1题~第8题 (1):通过试验(即编写带有此类问题的程序)…

《Java 高级篇》六:I/O 流

Java 中的文件系统和 I/O 流。Author: ACatSmiling Since: 2024-10-01字符编码 字符集 Charset:也叫编码表。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。编码表的由来:计算机只能识别二进制数据,早期由来是电信号。为了方便应用计算机,…

《Java 高级篇》七:线程和线程池

Java 中线程的创建方式,以及线程池的应用。Author: ACatSmiling Since: 2024-10-01程序、进程和线程 程序(program):是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process):是程序的一次执行过程,或是正在运行的一个程序。…

《Java 高级篇》五:数据结构

Java 中的数组和集合,ArrayList、HashMap 的源码和底层数据结构分析。Author: ACatSmiling Since: 2024-10-01概述 在 Java 语言中,数组(Array)和集合都是对多个数据进行存储操作的结构,简称Java 容器。此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储。 数组…

06-论说文:审题与立意(3)

06-论说文:审题与立意(3) 立意 就提论题 不能写创新 违反同一律 手段 目的 多谈主张 立意过宽 立意过窄 多谈主张 手段+目的 要结合题干信息 假大空 大而不当 审题立意是整体性的

linux系统配置及相关文件

一.本地服务器:几个相关软件 123432 (一)vmware <关键字:虚拟机(搭建虚拟环境) (二)MobaXterm 关键字:连接 (三) 1231314参考链接 1231314

python必会的函数或者操作

排序 sorted(data,reverse=True or False)zip()将多个可迭代对象打包成一个元组列表 list or set (zip())map()对可迭代对象中的每个元素应用函数 map(data,func)filter() 跟map类似的用法reduce()对可迭代对象中的元素进行累计计算 from functools import reduce 用法跟…

29. GIL全局解释器锁、信号量、线程池进程池

1. GIL全局解释器锁1.1 概念 In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiplenative threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (How…