基于PSO优化的OFDM系统PAPR抑制PTS算法MATLAB仿真
Posted 51matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于PSO优化的OFDM系统PAPR抑制PTS算法MATLAB仿真相关的知识,希望对你有一定的参考价值。
1.算法仿真效果
matlab2022a仿真结果如下:
2.算法涉及理论知识概要
部分传输序列(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进行进一步的抑制。整个算法的流程如下所示:
通过这个方法,可以在步骤一的基础上,提高性能,使其在复杂度降低的前提下,保存系统的性能不变。
PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解,在每一次迭代中,粒子通过跟踪两个“极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值。另一个极值是整个种群目前找到的最优解,这个极值是全局机制。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。
PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值(pbest和gbest)”来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。
对于公式(1):
公式(1)中的第一部分称为记忆项,表示上次速度大小和方向的影响;
公式(1)中的第二部分称为自身认知项,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;
公式(1)中的第三部分称为群体认知项,是一个从当前点指向种群最好点的矢量,反映了粒子间的协调合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。
综上所述,标准PSO算法流程:
初始化一群微粒(群体规模为N),包括随机位置和速度;
评价每个微粒的适应度;
对每个微粒,将其适应值与其经过的最好位置pbest作比较,如果较好,则将其作为当前的最好位置pbest;
对每个微粒,将其适应值与其经过的最好位置gbest作比较,如果较好,则将其作为当前的最好位置gbest;
根据公式(2)、(3)调整微粒的速度和位置;
未达到结束条件则转到第二步。
迭代终止条件根据具体问题一般选为最大迭代次数Gk或微粒群迄今为止搜索到的最优位置满足预定最小适应阈值。
3.MATLAB核心程序
%子载波数量 NsubCarrier = 1024; %符号数量 NSymb = 1e3; %QPSK mod_idx = 2; %subblocks Nsub_blk = [2 4 8 16 32]; %over sample rate OverSampleRate = 4; %1 -> adjacency partition;2 -> interlaced partition Partition = 1; %weighting factor W = 1; %PSO粒子群数量 Npso = 20; %PSO迭代次数 Iters = 50; c1 = 2; c2 = 2; Vmax = 0.2; wmax = 0.9; wmin = 0.4; w = wmax-(wmax-wmin)/Iters*(1:Iters); v_min = -Vmax; v_max = Vmax; ........................................................... %PAPR for n = 1:1:NSymb Datatx = floor(rand(Length_data,1)*(2^mod_idx)); DataMap = MapSymb(Datatx+1); Symbol_tx = Initial_Pattern; Symbol_tx(Position_pilot) = round(rand(Length_pilot,1)); Symbol_tx(Position_data) = DataMap; %PAPR without PTS Symbol_ifft = ifft([Symbol_tx(1:NsubCarrier/2);zeros(NsubCarrier*(OverSampleRate-1),1);Symbol_tx(NsubCarrier/2+1:end)]); PowerPerBit = abs(Symbol_ifft).^2; PowerMean = mean(PowerPerBit); PowerMax = max(PowerPerBit); PAPRNoPTS(1,n) = PowerMax/PowerMean; .................................................................................... end n end PAPRNoPTS = 10*log10(PAPRNoPTS); PAPR_PSO = 10*log10(PAPR_PSO); for k = 1:1:length(PAPR0) CntNoPTS(k) = sum( PAPRNoPTS > PAPR0(k) ); for ii = 1:1:length(Nsub_blk) Cnt_PSO(ii,k) = sum( PAPR_PSO(ii,:) > PAPR0(k) ); end end
基于参数化最小互熵(Parametric Minimum Cross Entropy,PMCE)算法的PAPR抑制matlab仿真
目录
一、理论基础
在通信系统中,信道所能提供的带宽通常比传送一路信号所需的带宽要宽得多。如果一个信道只传送一路信号是非常浪费的,为了能够充分利用信道的带宽,就可以采用频分复用的方法。
OFDM主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI) 。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。
OFDM技术是HPA联盟(HomePlug Powerline Alliance)工业规范的基础,它采用一种不连续的多音调技术,将被称为载波的不同频率中的大量信号合并成单一的信号,从而完成信号传送。由于这种技术具有在杂波干扰下传送信号的能力,因此常常会被利用在容易受外界干扰或者抵抗外界干扰能力较差的传输介质中。
峰值平均功率比(PAPR—Peak to Average Power Ratio),简称峰均比(PAPR)。MIMO-OFDM系统能够提供更大的覆盖范围、更好的传输质量、更高的数据速率和频谱效率。然而,由于OFDM 符号是由多个独立经过调制的子载波信号叠加而成的,当各个子载波相位相同或者相近时,叠加信号便会受到相同初始相位信号的调制,从而产生较大的瞬时功率峰值,由此进一步带来较高的峰值平均功率比(PAPR—Peak to Average Power Ratio),简称峰均比(PAPR)。由于一般的功率放大器的动态范围都是有限的,所以峰均比较大的MIMO-OFDM信号极易进入功率放大器的非线性区域,导致信号产生非线性失真,造成明显的频谱扩展干扰以及带内信号畸变,导致整个系统性能严重下降。高峰均比已成为MIMO-OFDM 的一个主要技术阻碍。
OFDM(Orthogonal Frequency Division Multiplexing)正交频分复用技术,OFDM是一种MCM(Multi-Carrier Modulation)多载波调制技术。其核心是将信道分成若干个正交子信道,在每个子信道上进行窄带调制和传输,这样减少了子信道之间的相互干扰。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上的频率选择性衰落是平坦的,大大消除了符号间干扰。另外,由于在OFDM系统中各个子信道的载波相互正交,于是它们的频谱是相互重叠的,这样不但减小了子载波间的相互干扰,同时又提高了频谱利用率。在各个子信道中的这种正交调制和解调可以采用IFFT和FFT方法来实现。
作为OFDM系统的主要问题之一的高峰值平均功率比问题一直是学术和工 业界的研究重点。迄今为止,人们已经提出了很多的解决办法, 这些方法大致 分为三大类:
(1)限幅类技术, 如幅度切削和滤波,峰值加窗技术和峰值抵消技术。
(2)编码类技术, 如块编码, Golay互补序列和Reed-Muller码 。
(3)概率类技术。如选择性映射(SLM,Selected Mapping) ,部分传输序 列(PTS,Partial Transmit Sequence) ,子载波保留方法(TR, Tone Reservation) ,子载波注入方法(TI,Tone Injection) [60]和活动 星座扩展方法(ACE,Active Constellation Expansion) 等方法, 但是这 些方法都存在着各种各样的缺点。
在业界,往往采用最简单的限幅滤波类技术 来降低PAPR,这种方法虽然简单,但是它降低了系统的误比特率,同时引入 了带外噪声和带内失真。编码类技术是另一个著名的PAPR减少方法,它获得 了最好的PAPR减少,但是它的解码复杂度太高,码率太低,因此这种技术只 适用于子载波数较小的情形(N ≤ 32)。概率类技术不着眼于降低信号幅度的最大值,而是降低峰值出现的概率。以SLM,PTS,TR和TI为代表。SLM技术 需要多个IFFT运算,因此该方法的复杂度较高。PTS技术为了获得最优的相位 旋转因子,搜索的复杂度随OFDM子块数呈指数增长。而且这两种方法都需要 发送边信息。TR技术的最优峰值减少子载波的选取和最优切削阈值的选取是 非常困难的。TI技术需要修正或扩展信号的调制星座,使得同一个数据对应星 座上的多个点,但选取最优的信号星座表示也是非常困难的。
参数化最小互熵(PMCE,Parametric Minimum Cross-Entropy) 方法起 源于著名的Kullback最小互熵方法(M inxEnt) 。主要用于稀有事件的概率 估计和对可满足性问题的计数。这种方法是基于由最优联合MinxEnt分布推导 而来的边缘概率分布。类似于互熵(CE,Cross Entropy)方法,PMCE方法 首先把一个基本的计数问题转化为一个相应的稀有事件出现的概率估计问题, 然后解这个估计问题。PMCE方法能发现重要采样分布的最优参数,并能高 效地给出高质量的解。它是一个多项式时间算法。
二、核心程序
相位表格如下:
Phase_choice = ...
[1 1 1 1 1 1 1 1;
1 1 1 1 1 1 1 2;
1 1 1 1 1 1 2 1;
1 1 1 1 1 1 2 2;
1 1 1 1 1 2 1 1;
1 1 1 1 1 2 1 2;
1 1 1 1 1 2 2 1;
1 1 1 1 1 2 2 2;
1 1 1 1 2 1 1 1;
1 1 1 1 2 1 1 2;
1 1 1 1 2 1 2 1;
1 1 1 1 2 1 2 2;
1 1 1 1 2 2 1 1;
1 1 1 1 2 2 1 2;
1 1 1 1 2 2 2 1;
1 1 1 1 2 2 2 2;
1 1 1 2 1 1 1 1;
1 1 1 2 1 1 1 2;
1 1 1 2 1 1 2 1;
1 1 1 2 1 1 2 2;
1 1 1 2 1 2 1 1;
1 1 1 2 1 2 1 2;
1 1 1 2 1 2 2 1;
1 1 1 2 1 2 2 2;
1 1 1 2 2 1 1 1;
1 1 1 2 2 1 1 2;
1 1 1 2 2 1 2 1;
1 1 1 2 2 1 2 2;
1 1 1 2 2 2 1 1;
1 1 1 2 2 2 1 2;
1 1 1 2 2 2 2 1;
1 1 1 2 2 2 2 2;
1 1 2 1 1 1 1 1;
1 1 2 1 1 1 1 2;
1 1 2 1 1 1 2 1;
1 1 2 1 1 1 2 2;
1 1 2 1 1 2 1 1;
1 1 2 1 1 2 1 2;
1 1 2 1 1 2 2 1;
1 1 2 1 1 2 2 2;
1 1 2 1 2 1 1 1;
1 1 2 1 2 1 1 2;
1 1 2 1 2 1 2 1;
1 1 2 1 2 1 2 2;
1 1 2 1 2 2 1 1;
1 1 2 1 2 2 1 2;
1 1 2 1 2 2 2 1;
1 1 2 1 2 2 2 2;
1 1 2 2 1 1 1 1;
1 1 2 2 1 1 1 2;
1 1 2 2 1 1 2 1;
1 1 2 2 1 1 2 2;
1 1 2 2 1 2 1 1;
1 1 2 2 1 2 1 2;
1 1 2 2 1 2 2 1;
1 1 2 2 1 2 2 2;
1 1 2 2 2 1 1 1;
1 1 2 2 2 1 1 2;
1 1 2 2 2 1 2 1;
1 1 2 2 2 1 2 2;
1 1 2 2 2 2 1 1;
1 1 2 2 2 2 1 2;
1 1 2 2 2 2 2 1;
1 1 2 2 2 2 2 2;
1 2 1 1 1 1 1 1;
1 2 1 1 1 1 1 2;
1 2 1 1 1 1 2 1;
1 2 1 1 1 1 2 2;
1 2 1 1 1 2 1 1;
1 2 1 1 1 2 1 2;
1 2 1 1 1 2 2 1;
1 2 1 1 1 2 2 2;
1 2 1 1 2 1 1 1;
1 2 1 1 2 1 1 2;
1 2 1 1 2 1 2 1;
1 2 1 1 2 1 2 2;
1 2 1 1 2 2 1 1;
1 2 1 1 2 2 1 2;
1 2 1 1 2 2 2 1;
1 2 1 1 2 2 2 2;
1 2 1 2 1 1 1 1;
1 2 1 2 1 1 1 2;
1 2 1 2 1 1 2 1;
1 2 1 2 1 1 2 2;
1 2 1 2 1 2 1 1;
1 2 1 2 1 2 1 2;
1 2 1 2 1 2 2 1;
1 2 1 2 1 2 2 2;
1 2 1 2 2 1 1 1;
1 2 1 2 2 1 1 2;
1 2 1 2 2 1 2 1;
1 2 1 2 2 1 2 2;
1 2 1 2 2 2 1 1;
1 2 1 2 2 2 1 2;
1 2 1 2 2 2 2 1;
1 2 1 2 2 2 2 2;
1 2 2 1 1 1 1 1;
1 2 2 1 1 1 1 2;
1 2 2 1 1 1 2 1;
1 2 2 1 1 1 2 2;
1 2 2 1 1 2 1 1;
1 2 2 1 1 2 1 2;
1 2 2 1 1 2 2 1;
1 2 2 1 1 2 2 2;
1 2 2 1 2 1 1 1;
1 2 2 1 2 1 1 2;
1 2 2 1 2 1 2 1;
1 2 2 1 2 1 2 2;
1 2 2 1 2 2 1 1;
1 2 2 1 2 2 1 2;
1 2 2 1 2 2 2 1;
1 2 2 1 2 2 2 2;
1 2 2 2 1 1 1 1;
1 2 2 2 1 1 1 2;
1 2 2 2 1 1 2 1;
1 2 2 2 1 1 2 2;
1 2 2 2 1 2 1 1;
1 2 2 2 1 2 1 2;
1 2 2 2 1 2 2 1;
1 2 2 2 1 2 2 2;
1 2 2 2 2 1 1 1;
1 2 2 2 2 1 1 2;
1 2 2 2 2 1 2 1;
1 2 2 2 2 1 2 2;
1 2 2 2 2 2 1 1;
1 2 2 2 2 2 1 2;
1 2 2 2 2 2 2 1;
1 2 2 2 2 2 2 2;
2 1 1 1 1 1 1 1;
2 1 1 1 1 1 1 2;
2 1 1 1 1 1 2 1;
2 1 1 1 1 1 2 2;
2 1 1 1 1 2 1 1;
2 1 1 1 1 2 1 2;
2 1 1 1 1 2 2 1;
2 1 1 1 1 2 2 2;
2 1 1 1 2 1 1 1;
2 1 1 1 2 1 1 2;
2 1 1 1 2 1 2 1;
2 1 1 1 2 1 2 2;
2 1 1 1 2 2 1 1;
2 1 1 1 2 2 1 2;
2 1 1 1 2 2 2 1;
2 1 1 1 2 2 2 2;
2 1 1 2 1 1 1 1;
2 1 1 2 1 1 1 2;
2 1 1 2 1 1 2 1;
2 1 1 2 1 1 2 2;
2 1 1 2 1 2 1 1;
2 1 1 2 1 2 1 2;
2 1 1 2 1 2 2 1;
2 1 1 2 1 2 2 2;
2 1 1 2 2 1 1 1;
2 1 1 2 2 1 1 2;
2 1 1 2 2 1 2 1;
2 1 1 2 2 1 2 2;
2 1 1 2 2 2 1 1;
2 1 1 2 2 2 1 2;
2 1 1 2 2 2 2 1;
2 1 1 2 2 2 2 2;
2 1 2 1 1 1 1 1;
2 1 2 1 1 1 1 2;
2 1 2 1 1 1 2 1;
2 1 2 1 1 1 2 2;
2 1 2 1 1 2 1 1;
2 1 2 1 1 2 1 2;
2 1 2 1 1 2 2 1;
2 1 2 1 1 2 2 2;
2 1 2 1 2 1 1 1;
2 1 2 1 2 1 1 2;
2 1 2 1 2 1 2 1;
2 1 2 1 2 1 2 2;
2 1 2 1 2 2 1 1;
2 1 2 1 2 2 1 2;
2 1 2 1 2 2 2 1;
2 1 2 1 2 2 2 2;
2 1 2 2 1 1 1 1;
2 1 2 2 1 1 1 2;
2 1 2 2 1 1 2 1;
2 1 2 2 1 1 2 2;
2 1 2 2 1 2 1 1;
2 1 2 2 1 2 1 2;
2 1 2 2 1 2 2 1;
2 1 2 2 1 2 2 2;
2 1 2 2 2 1 1 1;
2 1 2 2 2 1 1 2;
2 1 2 2 2 1 2 1;
2 1 2 2 2 1 2 2;
2 1 2 2 2 2 1 1;
2 1 2 2 2 2 1 2;
2 1 2 2 2 2 2 1;
2 1 2 2 2 2 2 2;
2 2 1 1 1 1 1 1;
2 2 1 1 1 1 1 2;
2 2 1 1 1 1 2 1;
2 2 1 1 1 1 2 2;
2 2 1 1 1 2 1 1;
2 2 1 1 1 2 1 2;
2 2 1 1 1 2 2 1;
2 2 1 1 1 2 2 2;
2 2 1 1 2 1 1 1;
2 2 1 1 2 1 1 2;
2 2 1 1 2 1 2 1;
2 2 1 1 2 1 2 2;
2 2 1 1 2 2 1 1;
2 2 1 1 2 2 1 2;
2 2 1 1 2 2 2 1;
2 2 1 1 2 2 2 2;
2 2 1 2 1 1 1 1;
2 2 1 2 1 1 1 2;
2 2 1 2 1 1 2 1;
2 2 1 2 1 1 2 2;
2 2 1 2 1 2 1 1;
2 2 1 2 1 2 1 2;
2 2 1 2 1 2 2 1;
2 2 1 2 1 2 2 2;
2 2 1 2 2 1 1 1;
2 2 1 2 2 1 1 2;
2 2 1 2 2 1 2 1;
2 2 1 2 2 1 2 2;
2 2 1 2 2 2 1 1;
2 2 1 2 2 2 1 2;
2 2 1 2 2 2 2 1;
2 2 1 2 2 2 2 2;
2 2 2 1 1 1 1 1;
2 2 2 1 1 1 1 2;
2 2 2 1 1 1 2 1;
2 2 2 1 1 1 2 2;
2 2 2 1 1 2 1 1;
2 2 2 1 1 2 1 2;
2 2 2 1 1 2 2 1;
2 2 2 1 1 2 2 2;
2 2 2 1 2 1 1 1;
2 2 2 1 2 1 1 2;
2 2 2 1 2 1 2 1;
2 2 2 1 2 1 2 2;
2 2 2 1 2 2 1 1;
2 2 2 1 2 2 1 2;
2 2 2 1 2 2 2 1;
2 2 2 1 2 2 2 2;
2 2 2 2 1 1 1 1;
2 2 2 2 1 1 1 2;
2 2 2 2 1 1 2 1;
2 2 2 2 1 1 2 2;
2 2 2 2 1 2 1 1;
2 2 2 2 1 2 1 2;
2 2 2 2 1 2 2 1;
2 2 2 2 1 2 2 2;
2 2 2 2 2 1 1 1;
2 2 2 2 2 1 1 2;
2 2 2 2 2 1 2 1;
2 2 2 2 2 1 2 2;
2 2 2 2 2 2 1 1;
2 2 2 2 2 2 1 2;
2 2 2 2 2 2 2 1;
2 2 2 2 2 2 2 2;
];
............................................................................
PAPR_pts = zeros(1,Nframes);
PAPRA = 7.5:0.25:10;
for ii = 1:length(Iter)
ii
for k=1:Nframes
%产生数据源
QPSK_Ind = randint(1,Nfft,length(Map_qpsk)) + 1;
%调制,这里为了研究PAPR性能,所以不加入编码模块和交织模块
Qpsk_mod = Map_qpsk(QPSK_Ind(1,:));
%进行IFFT变换
Dat_Ifft = ifft(Qpsk_mod,[],2);
%计算功率和PAPR
Signal_Power = abs(Dat_Ifft.^2);
Peak_Power = max(Signal_Power,[],2);
Mean_Power = mean(Signal_Power,2);
PAPRo(k) = 10*log10(Peak_Power./Mean_Power);
%随机分块
QPSK_Ind = randperm(Nfft);
A = zeros(Npts,Nfft);
for v=1:Npts
A(v,QPSK_Ind(v:Npts:Nfft)) = Qpsk_mod(QPSK_Ind(v:Npts:Nfft));
end
a = ifft(A,[],2);
%限幅
Tho = mean2(abs(a));
[rr,cc] = size(a);
for i = 1:rr
for j = 1:cc
if abs(a(i,j)) > Tho
a(i,j) = Tho*(real(a(i,j)) + ij*imag(a(i,j)))/abs(a(i,j));
end
end
end
%PCME算法
P0 = 0.5*ones(1,Npts);%初始概率为0.5
Ps = zeros(Iter(ii),Npts);
P = zeros(Iter(ii),Npts);
for iter = 1:Iter(ii)
...............................................................
%更新概率P
if iter == 1
Ps(iter,:) = P0;
else
Ps(iter,:) = alpha * P(iter,:) + (1-alpha) * P(iter-1,:);
if sum(Ps(iter,:)) == round(sum(Ps(iter,:)));
break;
end
end
end
%根据PMCE计算得到的相位因子来计算PAPR值
aa = sum(a.*repmat(sign((1-2*Ps(iter,:)))',1,Nfft));
Signal_Power = abs(aa.^2);
Peak_Power_temp = max(Signal_Power,[],2);
Mean_Power_temp = mean(Signal_Power,2);
PAPR_temp(k) = 10*log10(Peak_Power_temp./Mean_Power_temp);
end
[cdf,PAPR] =ecdf(PAPR_temp);
NUMs(ii) = mean(PAPR);
end
figure;
plot(Iter,NUMs,'b-o');
xlabel('PAPR0[dB]');
ylabel('Search');
grid on;
%01-62
三、测试结果
在matlab2021a中仿真得到如下的效果:
以上是关于基于PSO优化的OFDM系统PAPR抑制PTS算法MATLAB仿真的主要内容,如果未能解决你的问题,请参考以下文章
PAPR抑制算法对IPTS,OPTS,CE,PMCE等常见的PAPR抑制算法进行仿真分析
基于参数化最小互熵(Parametric Minimum Cross Entropy,PMCE)算法的PAPR抑制matlab仿真
m基于rbf神经网络和遗传算法优化的MIMO-OFDM系统信道估计算法matlab仿真