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

用于非线性多载波卫星信道的多输入多输出符号速率信号数字预失真器DPD(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


💥1 概述

文献来源:

摘要:

该文提出一种数字预失真(DPD)方案,用于多载波卫星通信信道中的非线性失真抑制。所提出的DPD具有类似于数据DPD方案的多输入多输出架构。然而,它使用多速率处理算法增强了数据DPD的缓解性能,以实现非线性算子的频谱拓宽。与单载波(单输入单输出)信号(波形)DPD方案相比,所提出的DPD具有较低的数字处理速率,降低了预失真器所需的硬件成本。所提出的DPD在总体退化方面优于数据和信号DPD方案。此外,它的性能最接近由具有有限最大输出功率的理想缓解通道描述的通道边界。

对功率/质量效率高的卫星转发器的需求不断增加,推动了使用单个高功率放大器(HPA)联合放大多载波信号。在这种多载波(MC)场景中,多个信号在频率上被多路复用,并共享卫星转发器的板载硬件[1]。但是,放大的信号会被非线性HPA失真。除了单载波中存在的非线性失真外,MC场景还存在相邻信道干扰(ACI)和互调失真(IMD)效应[1],这些效应会进一步使信号失真并降低系统容量。因此,减轻这些失真对于MC卫星系统的有效运行至关重要。

在网关上运行的非线性失真缓解技术称为数字预失真(DPD),它们具有不同的部署架构。首先,数据DPD方案[2,3]是多输入多输出(MIMO)(每个载波产生一个预失真流),并以符号速率运行,因此需要相对较低的数字带宽。其次,信号DPD方案[4]是单输入单输出(SISO)并且以更高的速率工作,因此需要比数据DPD更大的数字带宽。信号DPD充分利用可用的模拟上行链路带宽,而数据DPD只能访问由载波符号速率设置的信道带宽。

该文提出一种基于模型的新型MIMO DPD技术,用于MC卫星信道中的非线性缓解,称为符号速率信号DPD(SRS DPD)。SRS DPD在脉冲整形滤波器之前产生预失真符号,类似于数据DPD方案,但它补偿了由于数字处理带宽有限而无法由数据DPD处理的失真效应(带外)。SRS DPD使用多速率处理算法来计算基函数,增强了数据DPD的非线性缓解功能,同时与信号DPD相比,它降低了数字处理或计算复杂度。因此,SRS DPD提供了一种“融合”架构,以低于信号DPD的复杂度利用比数据DPD更大的带宽。特别是,SRS DPD使用链路频率规划来补偿ACI和IMD。使用载波的频率链路规划,SRS预分配方案在载波频率间隔紧密的高效频谱配置中可能很有用。

在研究[3]中,作者提出了使用符号级应用的多级Volterra过程的卫星系统的MC预处理。级联多个Volterra滤波器增强了数据级计算的缓解能力,尽管计算复杂度更高。与[3]相比,SRS DPD使用单个Volterra滤波器,并通过多速率方案增强了数据电平的缓解。此外,SRS DPD不会像[3]那样执行通道估计,这会产生进一步的复杂性成本。

SRS-DPD方案在符号级别工作,将脉冲整形滤波器包含在要缓解的通道中。这使得SRS DPD在符号电平上是接收器失真最小化的最佳选择。由于对接收到的符号进行解码时获得了误码率(BER)性能,与SISO信号DPD相比,SRS DPD的工作域提高了整体链路性能,其中未缓解的失真通过脉冲整形滤波器传播。此外,对于给定的复杂程度,SRS DPD比SISO信号DPD具有更好的性能,并且SRS DPD的计算复杂度不会随着上行链路带宽的增加而增加,从而将其包含在具有大上行链路带宽的通信系统中。

📚2 运行结果

部分代码:

%% Evaluation

fprintf('\n ----- noiseless DPD Eval --------\n')

% passing the predistorter data for the channel (noiseless)
[rd1 rd2 rd3 OBO] = MC_Core_channel(IBO,inf,ud(:,1),ud(:,2),ud(:,3)); 
recd = [rd1 rd2 rd3];  
fprintf('OBO of the DPD signal: %2.2f \n',OBO)
     
distor = recd - AT;
for kk=1:3,      SD(kk) = db(norm(AT(:,kk),2)/norm(distor(:,kk))); end
fprintf('SIR (dB): \t %1.1f  dB \n',SD)

%% plotting the constellation
toc
figure,
subplot(131), plot(recn(:,1),'.b'), hold on, plot(recd(:,1),'.r'), 
plot(AT(:,1),'ok','MarkerFaceColor',[0 0 0]), axis([-1.5 1.5 -1.5 1.5])
subplot(132), plot(recn(:,2),'.b'), hold on, plot(recd(:,2),'.r'),
plot(AT(:,2),'ok','MarkerFaceColor',[0 0 0]), axis([-1.5 1.5 -1.5 1.5])
subplot(133), plot(recn(:,3),'.b'), hold on, plot(recd(:,3),'.r'),
plot(AT(:,3),'ok','MarkerFaceColor',[0 0 0]), axis([-1.5 1.5 -1.5 1.5])
legend('No DPD','MIMO DPD')
saveas(gcf, '../results/constellation.png');

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文章

相关文章:

用于非线性多载波卫星信道的多输入多输出符号速率信号数字预失真器DPD(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

【Spark】用udf和withColumn在dafaframe中创建新列

udf使用 import org.apache.spark.sql.functions.udf udf接收一个函数(func)作为参数,返回一个UserDefinedFunction。 UserDefinedFunction接收列(Column)作为参数,并返回Column. func可以接收普通类型参数…...

AIGC 设计能替代真正的设计师设计吗?

AIGC 设计能替代真正的设计师设计吗? 目录 一、写在前面的话 二、AIGC 设计能替代真正的设计师吗? 1.1、传统设计师设计 1.2、AIGC设计 1.3、相关概念 1.4、观点分析 (1)、审美角度 (2)、版权角度 …...

【1++的C++进阶】之emplace详解

👍作者主页:进击的1 🤩 专栏链接:【1的C进阶】 在前面C11系列的文章里,我们漏掉了几个知识点,这篇文章对其中一个知识点进行讲解,关于剩余的知识点的文章在后面会相继出炉。 C11中,针…...

React入门

一、react开始 1、react是什么 用于构建用户界面的JavaScript库 操作DOM呈现页面 (发送请求获取数据和处理数据不由react处理)fessbook开发 2、为什么要学 原生js操作DOM繁琐、效率低 使用原生js直接操作DOM,浏览器会进行大量重绘重排 原…...

第三方登录以及验证

第三方登录是指用户可以通过使用已有的第三方账号进行登录,而无需再次注册新的账号。常见的第三方登录平台包括微信、QQ、微博、GitHub等。 验证是指系统需要验证用户提供的信息是否正确,以确保用户可以登录系统。验证方式包括密码验证、手机号验证、邮…...

MS SQL Server问题汇总

1.报SQL Server Agent连接不上的错误 15:38:57.991 [debezium-sqlserverconnector-sqlserver_transaction_log_source-change-event-source-coordinator] WARN i.d.connector.sqlserver.SqlServerStreamingChangeEventSource - No maximum LSN recorded in the database; pl…...

在线海报图片设计器、图片编辑器源码/仿照稿定设计源码

在线海报设计系统素材设计源码是一个漂亮且功能强大的在线海报图片设计器,仿照稿定设计而成。该系统适用于多种场景,包括海报图片生成、电商分享图、文章长图、视频/公众号封面等。用户无需下载软件,即可轻松实现创意,迅速完成排版…...

KMP算法(C++)

KMP算法与BF算法不一样的在于,当主串与子串不匹配时,主串不回溯,选择了子串回溯,大大提高了运算效率。 借用了next1【】数组,让子串回溯。get_next函数求next1【】数组,get_next函数的实现难点在于下列几行…...

C++的异常类型与多级catch匹配

try-catch 的用法: try{// 可能抛出异常的语句 }catch(exceptionType variable){// 处理异常的语句 } 我们还遗留下一个问题,就是 catch 关键字后边的exceptionType variable,这节就来详细分析一下。exceptionType是异常类型,它指明了当前的 catch 可以处理什么类型的异常…...

查询IP地址可得到哪些信息

通过IP地址定位,可以获取一些基本的信息,包括以下内容: 1. 地理位置:你可以确定IP地址所在的地理位置,包括国家、州或省、城市和地理坐标。这通常是通过将IP地址与地理位置数据库进行匹配来实现的。 2. ISP&#xff…...

考研算法47天:01背包

问题描述 算法详细步骤 代码随想录 (programmercarl.com) ac代码 #include <iostream> using namespace std; int bag[1001]; int bagMax[1001]; int bagvalue[1001]; int main(){int n,v;cin>>n>>v;for(int i0;i<n;i){cin>>bag[i]>>bagva…...

Docker实战技巧(一):Kubernetes基础操作实战

Kubernetes定位在Saas层,重点解决了微服务大规模部署时的服务编排问题 1、关闭防火墙并设置开机禁用   systemctl stop firewalld   systemctl disable firewalld 2、配置repo   cd /etc/yum.repos.d/   下载Docker repo   wget https://mirrors.aliyun.com/docker-…...

android java读写yaml文件

目录 申请读写权限&#xff1a; build.gradle中添加库引用&#xff1a; android java读写yaml文件 java修改yaml文件 YamlFile&#xff1a; 修改yaml文件方法2 Yaml&#xff1a; 删除值&#xff1a; 申请读写权限&#xff1a; <uses-permission android:name"and…...

科学计算器网站Desmos网站

科学计算器网站Desmos网站 有时在学习工作或者生活中&#xff0c;需要用到计算问题&#xff0c;但由于电脑上没有安装相应的专业软件&#xff0c;难以计算有的问题&#xff0c;因而&#xff0c;本文推荐一种免费的在线计算网站Desmos。 一、Desmos网址 Desmos官网的地址为&a…...

结构体-时间的计算

任务描述 本关任务需要你编写函数计算一个时间之前“xx小时xx分xx秒”的时间是多少。 以24小时制的格式记录当前时间&#xff0c;譬如“09:19:52”&#xff0c;表示上午9点19分52秒&#xff0c;则“1小时20分30秒”前的时间应该是“同一天”的“07:59:22”。 提示&#xff1a;…...

pt24django教程

静态文件访问 不能与服务器端做动态交互的文件都是静态文件&#xff0c;如: 图片,css,js,音频,视频,html文件(部分) 静态文件配置 在 settings.py 中配置一下两项内容: STATIC_URL 静态文件的访问路径&#xff0c;通过哪个url地址找静态文件 &#xff0c;STATIC_URL ‘/s…...

Golang开发-new关键字

在Go语言中&#xff0c;new关键字用于创建一个新的零值对象&#xff0c;并返回指向该对象的指针。它是Go语言中用于分配内存的一种方式。 new关键字的语法如下&#xff1a; ptr : new(Type)其中&#xff0c;Type表示要创建的对象的类型&#xff0c;ptr是指向新对象的指针。 …...

遗传算法与粒子群算法的Python实现

遗传算法本文应用的是 python geatpy module粒子群算法本文应用的是 python pyswarm module 遗传算法 它的不等约束是...<0 import geatpy as ea import numpy as npea.Problem.single def evalVars(Vars): x1 Vars[0]x2 Vars[1]x3 Vars[2]x4 Vars[3]f (x1 2)**2 \…...

无涯教程-JavaScript - ASINH函数

描述 ASINH函数返回数字的反双曲正弦值。反双曲正弦是其双曲正弦为number的值,即ASINH(SINH(number))等于number。 语法 ASINH (number)争论 Argument描述Required/OptionalNumberAny real number.Required Notes 如果指定的数字未被识别为数字值,则ASIN返回#VALUE!错误 …...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

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

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

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

在 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 常见问题与解决建议…...