1.软件版本

matlab2017b

2.本算法理论知识

在PTS全局搜索的时候,预先设定好一个门限值,如果搜索到

那么就直接退出搜索。

所以使用这个方法,可以进行快速的搜索,而不用像全局搜索那样,全部搜索一遍,这种门限法仅仅是抑制了高于门限值的出现的概率,而并没有抑制低于门限值。

但是使用这个方法,可以大大降低PTS算法的复杂度。

然后针对这个方法存在的局限,加入限幅的思想,从而抑制高于门限的值。

限幅器的设计如下所示:

适当的引入了TR的思路到改进后的PTS算法中,引入的意义为:先预留出若干子载波来加载削峰信号,然后利用优化过的PTS算法对OFDM符号的PAPR进行抑制,之后再利用改进的TR算法对符号的PAPR进行进一步的抑制。虽然传统的PTS和TR算法比较复杂,但是本方法,结合了两种算法的优势,并使用其中的简化方法,进行优势互补,从而在算法复杂度较低的情况下,进一步提高系统的性能。

这里,我们使用改进后的PTS和TR进行结合,整个算法的流程如下所示:

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

当满足要求:的时候

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

步骤二:加入限幅的方法

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

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

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

步骤四:执行TR

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

3.部分源码

clc;
clear;
close all;
warning off;SNR        = 0:1:10;
Nfft       = 128;
ij         = sqrt(-1);
Npts       = 2;
Map_qpsk   = [1 -1 ij -ij];
Init_Phase = [1 -1 ij -ij];
Data_back  = [1 1;1 2;1 3;1 4;2 1;2 2;2 3;2 4;3 1;3 2;3 3;3 4;4 1;4 2;4 3;4 4];
Nframes    = 20000;
PAPR_pts   = zeros(1,Nframes);
Th         = 9;
Tho        = 0.12;
Tho2       = 0.2;for k = 1:Nframesif mod(k,1000) == 0k/1000end  %产生数据源QPSK_Ind       = randint(1,Nfft,length(Map_qpsk))+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     = randint(1,Nfft,length(Map_qpsk)) + 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;
endfigure;
semilogy(SNR,Error,'b-o');
xlabel('SNR');
ylabel('Ber');
grid on;
title('有PAPR的时候的系统误码率图');
disp('复杂度');
FZD = mean(times);
FZDsave BER_Data_with_PAPR.mat SNR Error FZD

4.仿真结论

4.参考文献

[1] Yang L ,  Chen R S ,  Siu Y M , et al. PAPR reduction of an OFDM signal by use of PTS with low computational complexity[J]. IEEE Transactions on Broadcasting, 2006, 52(1):83-86.

[1] Wang L ,  Liu J . PAPR Reduction of OFDM Signals by PTS With Grouping and Recursive Phase Weighting Methods[J]. IEEE Transactions on Broadcasting, 2011, 57(2):299-306.A01-60

【PTS】OFDM中PAPR抑制算法PTS的matlab仿真相关推荐

  1. matlab仿真ofdm的ccdf,OFDM系统峰均比降低算法的研究+Matlab仿真(6)

    OFDM系统峰均比降低算法的研究+Matlab仿真(6) 时间:2016-11-28 22:19来源:毕业论文 2.2.5 自适应技术 自适应调制技术在OFDM系统中也占有非常重要的地位,其调制思想是 ...

  2. OFDM通信系统PAPR抑制算法matlab仿真,对比SLM算法和PTS算法

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 OFDM(Orthogonal Frequency Division Multiplexing)正交频分复用技术,OFDM是一 ...

  3. 基于PSO优化的OFDM系统PAPR抑制PTS算法MATLAB仿真

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  4. 基于预留子载波的PAPR抑制算法matlab仿真

    目录 1.算法概述 2.仿真效果 3.matlab仿真源码 1.算法概述 峰值平均功率比(PAPR-Peak to Average Power Ratio),简称峰均比(PAPR).MIMO-OFDM ...

  5. 【水声自适应通信】基于OFDM的水声自适应调制通信系统性能matlab仿真

    1.软件版本 matlab2013b 2.本算法理论知识 (1)  调研收集水声通信信道模型和正交频分复用(OFDM)技术的有关资料,熟悉OFDM 原理和水声通信信道模型, 熟悉MATLAB工具. ( ...

  6. matlab中cuk电路搭建,cuk电路matlab仿真

    直流斩波电路有Buck电路.Boost电路.Buck-Boost电路.Cuk电路以及Sepic电路以及Zeta电路.Buck电路只有降压功能,Boost电路只有升压功能,所以这两个电路应用范围相对比较 ...

  7. m分集2跳OFDM系统中基于功率分配和子载波配对算法的信道容量matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 随着当代无线通信事业的迅猛发展,无线频谱资源已显得越来越匮乏,传统固定静态的无线频谱分配模式 ...

  8. 【PAPR抑制算法】对IPTS,OPTS,CE,PMCE等常见的PAPR抑制算法进行仿真分析

    1.软件版本 matlab2017b 2.本算法理论知识 <减少OFDM系统的峰均功率比的研究> 3.部分源码 clc; clear; close all; warning off; Ra ...

  9. MATLAB中肤色分割算法_基于MATLAB的车牌字符分割问题

    引言 车牌识别系统是一项比较成熟的技术,并且已经得到了广泛的应用. 图1 车牌识别系统(图片来源于网络) 车牌识别技术主要包含三个方面:车牌定位.字符分割和字符识别三个核心模块.车牌定位是利用车牌的颜 ...

最新文章

  1. [PHP] 访问MySQL
  2. AviatorEvaluator表达式引擎
  3. 前端学习(2925):vue改变样式1
  4. vue 水平居中_小心!你弹琴的坐姿暴露了你演奏的水平!
  5. 如何构建数据指标体系?
  6. n3k配置vpc是否还需要配置hsrp_VPC配置案例
  7. javascript提醒
  8. VirtualBox Failed to open/create the internal network 错误处理
  9. python工程师干什么的_Python就业前景和工资待遇分析,你学Python了吗?
  10. 生物流体力学及血流动力学建模仿真技术实战
  11. 软件测试面试1--软件测试基础理论(持续更新中...)
  12. 22轴三菱Q系列程序案例点胶机,QJ71C24串口与位移传感器通信案例
  13. Adobe软件的各种卸载工具和方法,不信灭不掉AE!
  14. java pandora_Pandora FMS监视简介
  15. 初识OpenGL (3)片段着色器(Fragment Shader)
  16. 电磁学乱七八糟的符号(一)
  17. Nat学习(sNat和dNat)
  18. linux下设置MySQL密码
  19. 软件工程之他见——鲍周晓
  20. 20,sql 测试 : 1.4g 文件的 sql 运行测试,表关联,日期转换,字符编码,乱码解决,程序的 shell 执行,字符串转数字,三个隐式转换,用列分区,输出,sum over

热门文章

  1. 期货开户合约的规模和价值
  2. 转眼就是一生,转身就是一世
  3. Linux|编译最新版的openssh-server-9.3的rpm包(一)
  4. Cisco-ENSA-网络安全考试测试题
  5. 什么才是unsigned ?
  6. #if 与 #endif
  7. 【CSS】盒子边框 ① ( 网页布局本质 | 盒子模型 | 盒子边框 Border | border-width 宽度 | border-style 边框样式 | 边框颜色 | 边框设置综合写法 )
  8. c语言memset函数作用,C语言memset函数使用方法详解
  9. 07. vue3+vite+qiankun搭建微应用前端框架,并接入vue3微应用
  10. csq与dbm的转换算法