m基于PTS+TR的OFDM系统PAPR联合抑制算法matlab仿真

news/2024/5/1 13:26:47/文章来源:https://blog.csdn.net/hlayumi1234567/article/details/128020272

目录

1.算法描述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法描述

       部分传输序列(Partial Transmit Sequence , PTS)由于其不受载波数量限制,并且能够有效的,无失真的降低OFDM信号峰均比,而受到广泛关注。部分传输序列算法(PTS)最初是由S.H.Muller和J.B.Huber于1997年提出。PTS算法的核心思想是将具有N个符号的输入序列按照一定的分割方式分割成V个子数据块,并且保持每个子数据块仍含有N个符号。然后对V个子数据块进行相位加权与合并处理,选择具有最小PAPR的一组符号进行传输,达到降低OFDM信号PAPR的目的。传统的PTS算法理论比较多,现成的资料也比较多,这里就不多做介绍了,通过仿真,对比PTS和没有PTS下。目前OFDM的PAPR主要算法有信号预畸变,信号扰码,编码三个方向来解决。

       在本课题中,我们将在传统PTS算法基础上引入了TR的思路到改进后的PTS算法中,引入的意义为:先预留出若干子载波来加载削峰信号,然后利用优化过的PTS算法对OFDM符号的PAPR进行抑制,之后再利用改进的TR算法对符号的PAPR进行进一步的抑制。整个算法的流程如下所示:

步骤一:加入门限,降低PTS算法的复杂度(但是这样会降低性能)

当满足要求:

算法就停止搜索,这样的话,就降低的算法的复杂度,但是会影响性能。

步骤二:加入限幅的方法

       通过这个方法,可以在步骤一的基础上,提高性能,使其在复杂度降低的前提下,保存系统的性能不变。 

步骤三:改进PTS和TR的结合

    为了和TR结合,首先,PTS分组必须为随机分组,并随机的保留一定的预留子载波,然后先执行PTS,再执行TR。

步骤四:执行TR

       将得到的频域信号X进行IFFT变换得到时域信号x,对x的每个子载波上的数据限幅,对取反后的限幅差值进行N点FFT变换,得到的频域反向限幅差值信号的预留子载波上的数据即为削峰数据,用其替代X中预留子载波上的数据即可有效地消除峰值信号。

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

3.MATLAB部分代码预览

 for k = 1:Nframesif mod(k,1000) == 0k/1000end  %产生数据源QPSK_Ind       = floor(length(Map_qpsk)*rand(1,Nfft))+1;%调制,这里为了研究PAPR性能,所以不加入编码模块和交织模块Qpsk_mod       = Map_qpsk(QPSK_Ind(1,:));            %随机分割tic;QPSK_Ind = randperm(Nfft);A        = zeros(1,Nfft);for v=1:NptsA(v,QPSK_Ind(v:Npts:Nfft)) = Qpsk_mod(QPSK_Ind(v:Npts:Nfft));enda       = ifft(A,[],2);%限幅[rr,cc] = size(a);for i = 1:rrfor j = 1:ccif abs(a(i,j)) > Thoa(i,j) = Tho*(real(a(i,j)) + ij*imag(a(i,j)))/abs(a(i,j));endendendfor n = 1:4^Npts%相位组合因子phase_temp        = Init_Phase(Data_back(n,:)).';if n == 1a_temp         = sum(a.*repmat(phase_temp,1,Nfft)); else  a_temp         = a_temp + sum(a.*repmat(phase_temp,1,Nfft)); endSignal_Power_temp = abs(a_temp.^2);Peak_Power_temp   = max(Signal_Power_temp,[],2);Mean_Power_temp   = mean(Signal_Power_temp,2);PAPR_temp         = 10*log10(Peak_Power_temp./Mean_Power_temp);if PAPR_temp < ThPAPR_pts(k) = PAPR_temp;X2          = a_temp;    break;endend%限幅[rr,cc] = size(X2);X2s     = X2;for i = 1:rrfor j = 1:ccif abs(X2(i,j)) > Tho2X2s(i,j) = Tho2*(real(X2(i,j)) + ij*imag(X2(i,j)))/abs(X2(i,j));endendendX3 = X2s;Signal_Power_temp = abs(X3.^2);Peak_Power_temp   = max(Signal_Power_temp,[],2);Mean_Power_temp   = mean(Signal_Power_temp,2);PAPRs(k)          = 10*log10(Peak_Power_temp./Mean_Power_temp); times(k) = toc;
end
[cdf,PAPR] = ecdf(PAPRs);
figure;
semilogy(PAPR,1-cdf,'b','LineWidth',3);
xlabel('PAPR0[dB]');
ylabel('CCDF (Pr[PAPR>PAPR0])');
grid on;
title('有PAPR的时候的系统CCDF图');
save PAPR_Data_with_PAPR.mat PAPR cdf
%下面的代码是计算误码率的代码
Error    = zeros(1,length(SNR));
Rec      = zeros(1,Nfft); 
PAPR_pts = zeros(1,min(Nframes,2000));
for ii = 1:length(SNR)Err_tmp = 0;for k=1:min(Nframes,2000)
%         RandStream.setDefaultStream(RandStream('mt19937ar','seed',k*ii));if mod(k,1000) == 0ii k/1000end%产生数据源QPSK_Dat     = floor(length(Map_qpsk)*rand(1,Nfft)) + 1;%调制,这里为了研究PAPR性能,所以不加入编码模块和交织模块Qpsk_mod     = Map_qpsk(QPSK_Dat);   %进行IFFT变换%随机分割QPSK_Ind = randperm(Nfft);A        = zeros(1,Nfft);for v=1:NptsA(v,QPSK_Ind(v:Npts:Nfft)) = Qpsk_mod(QPSK_Ind(v:Npts:Nfft));enda           = ifft(A,[],2);   %限幅[rr,cc] = size(a);for i = 1:rrfor j = 1:ccif abs(a(i,j)) > Thoa(i,j) = Tho*(real(a(i,j)) + ij*imag(a(i,j)))/abs(a(i,j));endendendfor n = 1:4^Npts%相位组合因子phase_temp        = Init_Phase(Data_back(n,:)).';if n == 1a_temp         = sum(a.*repmat(phase_temp,1,Nfft)); else  a_temp         = a_temp + sum(a.*repmat(phase_temp,1,Nfft)); endSignal_Power_temp = abs(a_temp.^2);Peak_Power_temp   = max(Signal_Power_temp,[],2);Mean_Power_temp   = mean(Signal_Power_temp,2);PAPR_temp         = 10*log10(Peak_Power_temp./Mean_Power_temp);if PAPR_temp < ThPAPR_pts(k)    = PAPR_temp;X2             = a_temp;    break;endend%限幅[rr,cc] = size(X2);X2s     = X2;for i = 1:rrfor j = 1:ccif abs(X2(i,j)) > Tho2X2s(i,j) = Tho2*(real(X2(i,j)) + ij*imag(X2(i,j)))/abs(X2(i,j));endendendX3 = X2s;R = X3;%通过高斯信道Dat_Ifft     = awgn(R,SNR(ii),'measured');%模拟实际的接收端的畸变Dat_Ifft2    = Dat_Ifft;if PAPR_pts(k) > 8+Tho+Tho2%瞬时功率过大,则畸变Dat_Ifft2 = randn(1,Nfft) + ij*randn(1,Nfft); end%fft变换Dat_fft      = fft(Dat_Ifft2,[],2); %解调I            = sign(real(Dat_fft)).*(abs(real(Dat_fft))>0.5);Q            = sign(imag(Dat_fft)).*(abs(imag(Dat_fft))>0.5);for i = 1:Nfftif I(i) ==  1 & Q(i) ==  0Rec(i) = 1; endif I(i) == -1 & Q(i) ==  0Rec(i) = 2;endif I(i) == 0  & Q(i) ==  1Rec(i) = 3;endif I(i) == 0  & Q(i) == -1Rec(i) = 4;end            endErr_tmp = Err_tmp + length(find(QPSK_Dat~=Rec));    endError(ii) = Err_tmp/min(Nframes,2000)/Nfft;
end
01_060_m

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-CSDN博客

V

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

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

相关文章

docker容器网络

第七章容器网络 Docker网络 veth pair&#xff1a;成对出现的一种虚拟网络设备&#xff0c;数据从一端进&#xff0c;从另一端出。用于解决网络命名空间之间隔离。 docker0&#xff1a;网桥是一个二层网络设备&#xff0c;通过网桥可以将Linux支持的不同端口连接起来&…

开源让这位 00 后逆袭成为各类大奖收割者

OpenI 启智社区在 2022 年推出的开源打榜活动&#xff0c;聚集了一帮非常活跃的开发者&#xff0c;上榜者覆盖了来自全国高校、科研机构、企业达 100 多家。其中&#xff0c;高校学生占 65%&#xff0c;近 60%的上榜者是 90 后&#xff0c;32%的上榜者是 00 后。真是 00 后浪推…

41、集合

一、基本介绍&#xff1a; 1、引入&#xff1a; &#xff08;1&#xff09;前面我们保存多个数据使用的是数组&#xff0c;但数组不足的地方有&#xff1a; 1&#xff09;长度开始时必须指定&#xff0c;而且一旦指定&#xff0c;不能更改 2&#xff09;保存的必须为同一类…

Socket网络编程

参考博客&#xff1a;https://blog.csdn.net/shuux666/article/details/124023652 1、环境查看 通过cmd窗口的命令:ipconfig查看本机IP地址 查看网络情况是否正常:ping百度官网 2、Socket概述 3、套接字建立连接过程 4、Socket网络编程 基本的Socket编程&#xff1a; 本实…

异常(Exception)

随着面向对象的结束&#xff0c;我们的JavaSE也就接近了尾声&#xff0c;还有两个章节没有去梳理&#xff0c;常用类和异常&#xff0c;本章先讲异常&#xff0c;剩下的常用类后面再来补。 废话不多说&#xff0c;直接开始本章的内容。 1. 认识异常 引出&#xff1a; 假设 n…

ArcGIS综合制图教程,简单上手!

目的 1、了解专题地图组成的各个要素&#xff1b; 2、掌握ArcGIS编辑专题图的方法和步骤&#xff1b; 实习内容 使用ArcGIS生成1&#xff1a;200万比例尺的浙江省县级行政区划图&#xff0c;并输出成像文件。 实习步骤 一、将ArcGIS切换到Layout视图&#xff0c;并调整页面…

[附源码]java毕业设计疫情期间物资分派管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

C++初阶(stack+queue)

stack是一种容器适配器&#xff0c;专门用在具有后进先出 (last-in first-out)操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&#xff0c;并提供一组…

精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的系统服务底层原理以及高性能存储设计挖掘深入

设计背景 消息中间件的本身定义来考虑&#xff0c;应该尽量减少对于外部第三方中间件的依赖。一般来说依赖的外部系统越多&#xff0c;也会使得本身的设计越复杂&#xff0c;采用文件系统作为消息存储的方式。 RocketMQ存储机制 消息中间件的存储一般都是利用磁盘&#xff0…

餐饮+KTV融合消费模式,会受消费者喜欢吗?

这个五一&#xff0c;我们雨科网门店系统的客户&#xff0c;大侠火锅店终于是将KTV搬到了自己的门店里&#xff0c;运用门店小程序功能及纸质代金券及礼品的噱头吸引客户进店&#xff0c;只需消费并和任意一人合唱一首歌即可领取&#xff0c;消费者在等餐或放松的时候一键点歌演…

OneAuth 2022.11.23版本更新内容

2022.11.23版本更新内容&#xff1a; 新增IdP飞书 云目录增加对Group的支持GWA浏览器插件适配性优化自定义授权服务器优化&#xff0c;适应RBAC、ABAC等多种场景授权IdP 北森优化&#xff0c;适配自定义的属性租户的部分试用功能需要联系后台开通其他一些Bug的修复 标题新增 …

PDF预览完整解决方案及各种兼容(VUE版)

PDF预览完整解决方案及各种兼容&#xff08;VUE版&#xff09; PDF预览完整解决方案及各种兼容&#xff08;VUE版&#xff09; - 掘金 前端学习使者正在上传…重新上传取消 2021年11月12日 16:57 阅读 2547 一、利用iframe 就一行代码就够了&#xff0c;只能满足最基本的…

ThinkPHP5目录结构

文章目录一、TP5的框架的下载1、[采用fastAdmin安装](https://www.fastadmin.net/download.html)2、Composer安装2.1 Composer提供的服务3、Git安装二、使用Composer安装后目录结构2.1 补充获取 Git 仓库git的工作机制一、TP5的框架的下载 1、采用fastAdmin安装 FastAdmin是一…

运营版uniapp多商户商城小程序+H5+APP+商家入驻短视频社区种草直播阶梯拼团

运营版uniapp多商户商城小程序H5APP商家入驻短视频社区种草直播阶梯拼团 前后端全套源码&#xff0c; 支持二次开发&#xff0c;代码无加密&#xff01; 独立商家后台 用于店铺商品管理订单管理发货管理等 多类经营模式 多商家B2B2C、自营B2C运营模式 私有化部署 前端Uni…

JVM类加载(类加载过程、双亲委派模型)

系列文章目录 JVM的内存区域划分_crazy_xieyi的博客-CSDN博客 文章目录 一、类加载过程二、关于类加载的典型试题三、双亲委派模型一、类加载过程 对于一个类来说&#xff0c;它的生命周期是这样的&#xff1a;1.加载 “加载”&#xff08;Loading&#xff09;阶段是整个“类加…

spring 如何解决循环依赖

什么是循环依赖 A 类中有一个属性 B &#xff0c;也就是说 A 依赖 B&#xff0c;同时 B 类中有一个属性 A, 也就是说 B 依赖 A. 他们之间的依赖关系形成了环。就是我们说的循环依赖&#xff0c;如下图&#xff1a; 循环依赖示例 public class CircularDependenciesDemo {publ…

SSM基于上述环境实现简单CUDA操作

目录 1. 结构 2. 环境&#xff1a; 3. controller 4. mapper 5. service 6. serviceImpl 7. mapper.xml 8. emplist.html 9. update 1. 结构 2. 环境&#xff1a; SSM整合 Spring SprintMVC Mybatishttps://blog.csdn.net/qq_41950447/article/details/128033971 3.…

Android -- 每日一问:Activity的启动模式(launchMode)有哪些,有什么区别?

经典回答 这应该是一道很虐人的面试题&#xff0c;很多人都答不上来&#xff0c;很多人根本就没有用过。当我发现在被我面试的人中有80%的比例对它不了解时&#xff0c;我找过一些同事讨论是否还有在面试中考查这个问题的必要&#xff0c;得到的回答是“程序员何苦为难程序员”…

2020-RKT

2020-RKT&#xff1a;Relation-Aware Self-Attention for Knowledge Tracing 有代码&#xff1a;https://github.com/shalini1194/RKT 摘要 学生在解决练习的过程中获得技能&#xff0c;每一次这样的互动都对学生解决未来练习的能力有明显的影响。 这种影响表现为:1)互动中涉…

电脑c盘满了怎么清理,快速清理,用这5招

​新买的电脑没用多久&#xff0c;突然发现系统提示磁盘空间不足。点击一看&#xff0c;电脑c盘空间已经爆满变红。当出现这种情况时&#xff0c;很多电脑的运行速度会大大降低&#xff0c;甚至导致部分应用无法正常运行。那么电脑c盘满了怎么清理&#xff1f;如何释放电脑c盘空…