m基于OFDM系统的PAPR性能matlab仿真,对比LFDMA,IFDMA,DFDMA

本文详细介绍了正交频分复用(OFDM)系统的峰均功率比(PAPR)问题,探讨了LFDMA、IFDMA和DFDMA三种技术如何通过子载波分配和信号处理降低PAPR。MATLAB核心程序展示了如何在实际中实现这些算法并进行仿真。
摘要由CSDN通过智能技术生成

目录

1.算法仿真效果

2.算法涉及理论知识概要

3.MATLAB核心程序

4.完整算法代码文件获得


1.算法仿真效果

matlab2022a仿真结果如下:

2.算法涉及理论知识概要

       在正交频分复用(Orthogonal Frequency Division Multiplexing, OFDM)系统中,信号的峰值功率相对于其平均功率的比例称为峰均功率比(Peak-to-Average Power Ratio, PAPR)。由于多个子载波的叠加,OFDM符号可能出现较大的瞬时幅度,导致非线性失真,尤其是在功率放大器处。计算公式为:

其中 X(n) 是OFDM符号的离散时间表示,maxn​∣X(n)∣2 表示符号的最大瞬时功率,而 E[∣X(n)∣2] 表示符号的平均功率。

LFDMA (Low Frequency Diversity Multiple Access)

        LFDMA是一种针对OFDM系统PAPR问题提出的改进方案,它通过对连续子载波分配数据以减少相位同步导致的峰值。尽管LFDMA的具体数学模型和PAPR降低原理可能因具体实施方案而异,但一般而言,它试图通过子载波分配策略来分散相位相干性,从而降低整体PAPR。

IFDMA (Interleaved Frequency Division Multiple Access)

        IFDMA通过交织子载波分配机制来降低PAPR。相较于OFDM,每个用户只在部分而非全部子载波上传输,且子载波间隔不连续。这样可以减少同时达到峰值的概率,进而降低PAPR。对于第 k 个用户,其信号在第 n 个子载波上的调制通常采用:

     其中dk​[] 是用户的基带数据符号,Ts​ 是采样间隔,Δf 是子载波间隔,t 是时间索引,G 是子载波交织步长,Tc​ 是总的子载波数目。

DFDMA (Distributed Frequency Division Multiple Access)

       DFDMA(有时也称为SC-FDMA,Single Carrier Frequency Division Multiple Access)是一种更接近单载波传输的技术,通过在频域进行预处理(如通过IFFT),然后在时域上进行分段传输,从而达到类似OFDM的频谱效率,但能显著降低PAPR。它的原理是将数据在一个较长的符号周期内均匀分布,减少了单个符号内的峰值。

       在实际的数学表述中,DFDMA的信号生成步骤与OFDM类似,但在数据映射至子载波前先进行分帧和时域上的分布,再通过IFFT转换到时域,因此PAPR较低。

      LFDMA和IFDMA通过不同的子载波分配策略来分散功率峰值,而DFDMA则通过改变数据在时频域的分布特征来降低PAPR。理论上,这些技术都能有效地降低传统OFDM的PAPR问题,但是它们各自的实施复杂度、频谱效率、以及对系统性能的影响(如BER、系统延迟等)各有不同。具体的数学分析通常涉及到大量的仿真和理论推导,包括但不限于概率密度函数、累积分布函数的分析,以及各种PAPR降低技术的效果评估。

3.MATLAB核心程序

........................................................................
for n = 1:MTKL
    % 数据转换为频域。
    X = fft(Signal);

    % 初始化子载波。
    Y = zeros(Nsubcs,1);    
    
    % 子载波映射。
    if Nsubc == 1
        Y(1:Q:Nsubcs) = X; % IFDMA映射。
    elseif Nsubc == 2
        Y(1:Nsymb) = X; % LFDMA映射。
    elseif Nsubc == 3
        Y(1:Q_tilda:Q_tilda*Nsymb) = X; % DFDMA映射。
    end

    % 数据转换回时域。
    y = ifft(Y);

    % 执行脉冲整形。
    if pulseShaping == 1
        y_oversampled = zeros(Nos*length(y), 1); % 初始化过采样数组。
        y_oversampled(1:Nos:end) = y; % 进行过采样。
        y_result = filter(psFilter, 1, y_oversampled); % 过滤。
    else
        y_result = y;
    end
    
    % 计算PAPR。
    papr(n) = 10*log10(max(abs(y_result).^2) / mean(abs(y_result).^2));
end


% Plot CCDF.
[N,X] = hist(papr, 100);

papr11=papr;
figure;
hist(papr, 100)
grid on


semilogy(X,1-cumsum(N)/max(cumsum(N)),'b')

if Modsel == 1 & Nsubc == 1
   save R211.mat X N papr11
end
if Modsel == 2 & Nsubc == 1
   save R221.mat X N papr11
end
if Modsel == 1 & Nsubc == 2
   save R212.mat X N papr11
end
if Modsel == 2 & Nsubc == 2
   save R222.mat X N papr11
end
if Modsel == 1 & Nsubc == 3
   save R213.mat X N papr11
end
if Modsel == 2 & Nsubc == 3
   save R223.mat X N papr11
end
0X_049m

4.完整算法代码文件获得

V

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我爱C编程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值