基于OFDM系统PAPR抑制算法,对比SLM和PTS

目录

1. 选择性映射(Sleceted Mapping,SLM)

1.1 SLM原理

1.2 SLM的MATLAB实现

2. 部分传输序列(PTS)

2.1 PTS原理

2.2 PTS的MATLAB实现

3.仿真结果


         OFDM(正交频分复用)是一种多载波调制技术,广泛应用于无线通信系统,如WLAN,4G,5G等。然而,OFDM信号的一个主要缺点是高峰均功率比(PAPR),它可能导致功率放大器的非线性失真,从而降低系统性能。为了克服这个问题,研究人员提出了许多降低PAPR的算法,其中包括选择性映射(SLM)和部分传输序列(PTS)。

1. 选择性映射(Sleceted Mapping,SLM)

1.1 SLM原理

       SLM是一种非常有效的PAPR降低技术,其基本思想是通过引入不同的相位旋转因子来生成多个候选OFDM信号,然后选择PAPR最小的信号进行传输。

SLM算法的原理如下:

       slm算法就是对QAM信号乘以U组相位因子序列,再进行ifft得到 U组ofdm信号,选择papr最小的那一组进行发送。因为对于ofdm信号而言,高PAPR出现的概率很小,一般1000个ofdm信号只会有个位数papr过高的值。那SLM方法对同一个QAM信号乘以N组相位后得到U个ofdm信号,从中选择PAPR最小的进行发送,就用概率的方法将高PAPR的ofdm信号滤出在外。

       首先,对原始的OFDM信号进行相位旋转。这通过乘以一个复数相位旋转因子实现,该因子通常是一个具有单位幅度、不同相位的复数。
       生成多个候选信号:通过改变相位旋转因子,可以生成多个不同的OFDM候选信号。
       PAPR计算:对每个候选信号计算PAPR。
       选择最佳信号:选择PAPR最小的候选信号进行传输。
        SLM算法能有效降低OFDM信号的PAPR,但其主要缺点是计算复杂度较高,因为需要生成并计算多个候选信号的PAPR。此外,由于需要传输边带信息(例如选择的相位旋转因子),因此会存在一定的带宽开销。

1.2 SLM的MATLAB实现

.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
X     = zeros(N,K);
Index = zeros(N,K);
for nSymbol=1:MAX_SYMBOLS
    Index(1,:)   = floor(length(QPSK_Set)*rand(1,K))+1;
    Index(2:N,:) = floor(length(Phase_Set)*rand(N-1,K))+1;
    
    X(1,:) = QPSK_Set(Index(1,:));                                          % Orignal Frequency domain signal
    Phase_Rot = Phase_Set(Index(2:N,:));
    X(2:N,:) = repmat(X(1,:),N-1,1).*Phase_Rot;                             % Phase roated Frequency domain signal
    
    x = ifft(X,[],2);                                                       % Time domain signal
    Signal_Power = abs(x.^2);
    Peak_Power   = max(Signal_Power,[],2);
    Mean_Power   = mean(Signal_Power,2);
    
    PAPR_temp = 10*log10(Peak_Power./Mean_Power);
    PAPR_Orignal(nSymbol) = PAPR_temp(1);
    PAPR_SLM(1,nSymbol)     = min(PAPR_temp(1:2));
    PAPR_SLM(2,nSymbol)     = min(PAPR_temp(1:4));
    PAPR_SLM(3,nSymbol)     = min(PAPR_temp(1:8));
    
end

[cdf1, PAPR1] = ecdf(PAPR_Orignal);
[cdf2, PAPR2] = ecdf(PAPR_SLM(1,:));
[cdf3, PAPR3] = ecdf(PAPR_SLM(2,:));
[cdf4, PAPR4] = ecdf(PAPR_SLM(3,:));

%--------------------------------------------------------------------------
semilogy(PAPR1,1-cdf1,'-k',PAPR2,1-cdf2,'-r',PAPR3,1-cdf3,'-b',PAPR4,1-cdf4,'-m')
legend('Orignal (N=1)','SLM (N=2)', 'SLM (N=4)', 'SLM (N=8)')
xlabel('PAPR0 [dB]');
ylabel('CCDF (Pr[PAPR>PAPR0])');
grid on
3065

2. 部分传输序列(PTS)

2.1 PTS原理

       PTS算法是另一种有效降低PAPR的方法。与SLM不同,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算法的原理如下:

       分块:首先将OFDM信号划分为几个不相交的子块。
       相位旋转:对每个子块独立地应用不同的相位旋转因子。
       PAPR优化:选择合适的相位旋转因子,使得整个OFDM信号的PAPR最小。
       相比于SLM,PTS的计算复杂度通常较低,因为不需要生成和检查所有可能的候选信号。然而,PTS的性能(在PAPR降低能力上)通常略逊于SLM。同SLM一样,PTS也需要额外的带宽来传输边带信息。

2.2 PTS的MATLAB实现

for ij=1:Lens
    % 随机生成一个索引 
    Ks          = floor(length(QPSK_map)*rand(1,L_fft))+1;
    % 原始频率域信号  
    X           = QPSK_map(Ks(1,:));  
    % 时域信号
    x           = ifft(X,[],2);                                                       
    X_pow       = abs(x.^2);
    X_max_pow   = max(X_pow,[],2);
    X_avg_pow   = mean(X_pow,2);
    % 计算PAPR  
    PAPR0(ij)   = 10*log10(X_max_pow./X_avg_pow);
    
    %PTS (交织分割/相邻分割)  
    Vpts        = zeros(V,L_fft);
    for v=1:V
         Vpts(v,(1+(v-1)*L_fft/4):1:v*L_fft/4) = X((1+(v-1)*L_fft/4):1:v*L_fft/4);
    end
    a    = ifft(Vpts,[],2);

    Vmin = 10;% 门限
% 此处为遍历寻找最优辅助信息,可以用迭代法寻求次优辅助信息,以减小计算量,以V=4为例,可以由16次减少到V次迭代;参见Paper
    for n=1:Num% 循环次数取决于选择的长度  
        phase0 = Phase_map(Phase_set(n,:)).'; % 取出选择的相位并转置  
        phase1      = repmat(phase0,1,L_fft);% 将相位矩阵复制K次,形成一个新的矩阵b  
        phase2      = a.*phase1;% 矩阵a和b进行元素级的乘法运算,结果存储在c中 
        phase3      = sum(phase2); % 对矩阵c的每一列求和,结果存储在向量d中  
        phase4      = abs(phase3);% 求向量d的绝对值,结果存储在向量e中  
        phase_max   = max(phase4);% 求向量e的最大值,结果存储在temp_max中
        if phase_max<Vmin% 如果temp_max小于当前最小值  
            Vmin = phase_max;% 更新最小值 
            Best_n = n;% 记录当前循环次数n,这是找到最小值的位置  
        end
    end
    % 用最佳选择的相位与a进行元素级的乘法运算,然后求和  
    asum        = sum(a.*repmat(Phase_map(Phase_set(Best_n,:)).',1,L_fft));
    % 计算信号功率        
    X_pow       = abs(asum.^2);
    X_max_pow   = max(X_pow,[],2);
    X_avg_pow   = mean(X_pow,2);
    PAPR1(ij)   = 10*log10(X_max_pow./X_avg_pow);
end
% 计算PAPR_Orignal的经验累积分布函数(CDF)和对应的PAPR值
[cdf1, PAPR1] = ecdf(PAPR0);
% 计算PAPR_PTS的经验累积分布函数(CDF)和对应的PAPR值
[cdf2, PAPR2] = ecdf(PAPR1);

3.仿真结果

       总的来说,SLM和PTS都是有效的降低OFDM系统PAPR的算法。SLM通过生成并选择PAPR最小的候选信号,而PTS则是通过将信号分成子块并分别进行相位旋转来降低PAPR。这两种方法都有其优缺点:SLM通常能提供较低的PAPR,但计算复杂度较高;而PTS则在计算复杂度和PAPR降低能力之间取得了折衷。在实际应用中,需要根据具体需求和限制来选择适合的算法。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值