问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OFDM系统中高峰均比(PAPR)以及DFT-S-OFDM

创作时间:
作者:
@小白创作中心

OFDM系统中高峰均比(PAPR)以及DFT-S-OFDM

引用
CSDN
1.
https://m.blog.csdn.net/qq_45889056/article/details/145755470

OFDM(正交频分复用)系统因其高数据传输速率和抗多径衰落的能力而被广泛应用于现代无线通信系统中。然而,OFDM信号的高峰均比(PAPR)问题一直是其应用中的一个主要挑战。本文将从数学角度深入分析OFDM系统的PAPR问题,并介绍DFT-S-OFDM作为降低PAPR的有效解决方案。

OFDM系统中PAPR的数学分析

OFDM信号的时域波形由多个正交子载波的叠加产生,当多个子载波在某一时刻相位对齐时,信号幅度会达到极大值,导致高PAPR。以下是关键公式推导:

(1) OFDM时域信号

假设OFDM符号有N个子载波,调制符号为X_k(如QPSK或QAM),则时域离散信号为:
$$
x[n] = \frac{1}{\sqrt{N}} \sum_{k=0}^{N-1} X_k e^{j \frac{2\pi kn}{N}}, \quad n = 0,1,\dots,N-1
$$
其中,归一化因子1/\sqrt{N}保证信号平均功率为1。

(2) PAPR定义

峰均比(PAPR)定义为信号的峰值功率与平均功率的比值:
$$
\text{PAPR} = \frac{\max_{n} |x[n]|^2}{E\left[ |x[n]|^2 \right]}
$$
其中,分母为平均功率,分子为瞬时峰值功率。

(3) PAPR的理论上限

若所有子载波相位对齐(X_k均为同相位),时域信号幅度达到最大:
$$
\max |x[n]| = \frac{1}{\sqrt{N}} \sum_{k=0}^{N-1} |X_k|
$$
假设X_k为归一化调制符号(如QPSK,|X_k|=1),则:
$$
\max |x[n]| = \sqrt{N} \quad \Rightarrow \quad \text{PAPR}_{\text{理论}} = N
$$
实际中,所有子载波相位对齐的概率极低,但PAPR仍随N增大而显著升高。

单载波与OFDM系统的PAPR对比分析

数学原理对比

  • 单载波系统
    单载波信号(例如QPSK或QAM)的时域幅度恒定(假设无脉冲成形),因此其峰均比理论值为0 dB:
    $$
    \text{PAPR}{\text{单载波}} = 10 \log{10}\left(\frac{\max |x[n]|^2}{E[|x[n]|^2]}\right) = 10 \log_{10}(1) = 0 , \text{dB}
    $$

  • OFDM系统
    OFDM信号的时域波形由多子载波叠加,相位对齐时产生高峰值:
    $$
    \text{PAPR}{\text{OFDM}} \approx 10 \log{10}(N) , \text{dB} \quad (N = \text{子载波数})
    $$

Python代码对比PAPR的CCDF曲线

以下代码生成单载波(QPSK)和OFDM信号的PAPR分布,并绘制对比图:

import numpy as np
import matplotlib.pyplot as plt

def generate_single_carrier(num_symbols, mod_order=4):
    """生成单载波信号(QPSK调制,假设无脉冲成形)"""
    data = np.random.randint(0, mod_order, num_symbols)
    constellation = np.exp(1j * (np.pi/4 + 2 * np.pi * data / mod_order))
    return constellation

def generate_ofdm_symbol(N_subcarrier, mod_order=4):
    """生成OFDM符号(QPSK调制)"""
    data = np.random.randint(0, mod_order, N_subcarrier)
    constellation = np.exp(1j * (np.pi/4 + 2 * np.pi * data / mod_order))
    time_signal = np.fft.ifft(constellation, n=N_subcarrier)
    return time_signal

def calculate_papr(signal):
    """计算PAPR(单位:dB)"""
    peak_power = np.max(np.abs(signal)**2)
    avg_power = np.mean(np.abs(signal)**2)
    return 10 * np.log10(peak_power / avg_power)

def plot_ccdf_comparison(N_subcarrier=64, num_symbols=1000):
    """绘制单载波与OFDM的PAPR对比CCDF曲线"""
    # 生成单载波信号(每个符号对应一个采样点)
    sc_signals = generate_single_carrier(num_symbols)  # 单载波信号
    ofdm_signals = [generate_ofdm_symbol(N_subcarrier) for _ in range(num_symbols)]  # OFDM信号

    # 计算PAPR
    sc_papr = [calculate_papr(sc_signals)] * num_symbols  # 单载波PAPR恒为0 dB
    ofdm_papr = [calculate_papr(signal) for signal in ofdm_signals]

    # 绘制CCDF
    plt.figure()
    # 单载波CCDF(理论值0 dB)
    plt.axvline(x=0, color='r', linestyle='--', label='Single Carrier (QPSK)')
    # OFDM CCDF
    values, base = np.histogram(ofdm_papr, bins=100, density=True)
    ccdf = 1 - np.cumsum(values) * np.diff(base)[0]
    plt.plot(base[:-1], ccdf, label=f'OFDM (N={N_subcarrier})')

    plt.xlabel('PAPR (dB)')
    plt.ylabel('Probability (PAPR > x)')
    plt.title('PAPR CCDF Comparison: Single Carrier vs. OFDM')
    plt.grid(True)
    plt.legend()
    plt.show()

# 执行对比
plot_ccdf_comparison(N_subcarrier=64, num_symbols=1000)

直观解释

  • 子载波叠加效应:当多个子载波同相位叠加时,时域信号幅度显著增大。
  • 统计特性:OFDM时域信号的实部和虚部近似为高斯分布,但其包络分布(幅度)会导致高PAPR。
  • 子载波数影响:子载波数N越大,出现极端峰值的概率越高。

数学与代码结论

参数
数学关系
代码验证
理论PAPR上限
PAPR_{\text{max}} = 10\log_{10}(N)
仿真显示PAPR随N增大而升高
子载波数N
PAPR与N正相关
对比N=64和N=256结果
信号叠加机制
多子载波同相位叠加导致高峰值
CCDF曲线右移,高PAPR概率增大

尽管OFDM天然存在高PAPR,但可通过以下技术缓解:

  1. 削峰(Clipping):直接限制信号幅度,但引入失真。
  2. 选择性映射(SLM):选择PAPR最低的信号版本。
  3. 预编码(PTS):优化相位序列降低峰值。
  4. 压扩变换:非线性压缩动态范围。
  5. DFT-S-OFDM:对于高功率的2级功率应用或者当用户设备位于基站蜂窝的边缘位置,远离信号塔时,DFT-S-OFDM可能是首选波形。

DFT-S-OFDM降低PAPR的原理

DFT-S-OFDM的基本原理

DFT-S-OFDM(离散傅里叶变换扩频正交频分复用)通过以下步骤降低PAPR:

  1. DFT预处理:将多个数据符号通过DFT转换到频域,形成频域扩展符号。
  2. 子载波映射:将DFT后的频域符号映射到OFDM子载波的中心位置(类似单载波特性)。
  3. IFFT变换:通过IFFT生成时域信号,最终信号表现为类似单载波的低PAPR特性。

降低PAPR的数学解释

假设输入数据符号为d_0, d_1, \dots, d_{M-1},经过M-点DFT扩展到频域:
$$
D_k = \sum_{m=0}^{M-1} d_m e^{-j \frac{2\pi km}{M}}, \quad k = 0,1,\dots,M-1
$$
将D_k映射到OFDM的N个子载波(通常N > M,未映射的位置填零),再通过IFFT生成时域信号:
$$
x[n] = \frac{1}{\sqrt{N}} \sum_{k=0}^{N-1} D_k e^{j \frac{2\pi kn}{N}}
$$
由于频域符号的扩展,时域信号的幅度波动显著降低,PAPR接近单载波系统。

Python代码实现

以下代码生成传统OFDM和DFT-S-OFDM的时域信号,并对比两者的PAPR分布。

(1) 生成DFT-S-OFDM信号

import numpy as np
import matplotlib.pyplot as plt

def generate_dft_s_ofdm_symbol(M_subcarrier, N_fft, mod_order=4):
    """生成DFT-S-OFDM符号(QPSK调制)"""
    # 生成QPSK数据符号
    data = np.random.randint(0, mod_order, M_subcarrier)
    constellation = np.exp(1j * (np.pi/4 + 2 * np.pi * data / mod_order))

    # DFT预处理(M点DFT)
    dft_output = np.fft.fft(constellation, n=M_subcarrier)

    # 子载波映射到中心位置(假设N_fft > M_subcarrier)
    subcarrier_mapping = np.zeros(N_fft, dtype=complex)
    start_idx = (N_fft - M_subcarrier) // 2
    subcarrier_mapping[start_idx:start_idx + M_subcarrier] = dft_output

    # IFFT变换生成时域信号
    time_signal = np.fft.ifft(subcarrier_mapping, n=N_fft)
    return time_signal

def calculate_papr(signal):
    """计算PAPR(单位:dB)"""
    peak_power = np.max(np.abs(signal)**2)
    avg_power = np.mean(np.abs(signal)**2)
    return 10 * np.log10(peak_power / avg_power)

def plot_papr_comparison(M_subcarrier, N_fft, num_symbols=1000):
    """绘制OFDM与DFT-S-OFDM的PAPR对比CCDF曲线"""
    ofdm_papr = []
    dfts_ofdm_papr = []

    for _ in range(num_symbols):
        # 传统OFDM(占用全部子载波)
        ofdm_symbol = generate_ofdm_symbol(N_fft)
        ofdm_papr.append(calculate_papr(ofdm_symbol))
      
        # DFT-S-OFDM(占用M个子载波)
        dfts_symbol = generate_dft_s_ofdm_symbol(M_subcarrier, N_fft)
        dfts_ofdm_papr.append(calculate_papr(dfts_symbol))

    # 计算CCDF
    def compute_ccdf(papr_list):
        values, base = np.histogram(papr_list, bins=100, density=True)
        ccdf = 1 - np.cumsum(values) * np.diff(base)[0]
        return base[:-1], ccdf

    plt.figure()
    # 传统OFDM
    x_ofdm, y_ofdm = compute_ccdf(ofdm_papr)
    plt.plot(x_ofdm, y_ofdm, label=f'OFDM (N={N_fft})')

    # DFT-S-OFDM
    x_dfts, y_dfts = compute_ccdf(dfts_ofdm_papr)
    plt.plot(x_dfts, y_dfts, label=f'DFT-S-OFDM (M={M_subcarrier}, N={N_fft})')

    plt.xlabel('PAPR (dB)')
    plt.ylabel('Probability (PAPR > x)')
    plt.title('PAPR CCDF: OFDM vs. DFT-S-OFDM')
    plt.grid(True)
    plt.legend()
    plt.show()

# 参数设置:M为有效子载波数,N_fft为OFDM的总子载波数
M_subcarrier = 64  # DFT-S-OFDM有效子载波数
N_fft = 256        # OFDM总子载波数
plot_papr_comparison(M_subcarrier, N_fft)

代码说明与结果分析

  1. DFT预处理
  • 输入数据符号通过M-点DFT扩展,映射到OFDM的N个子载波中心位置。
  • 代码中M_subcarrier=64和N_fft=256表示DFT-S-OFDM仅使用64个子载波,而OFDM使用全部256个子载波。
  1. PAPR对比
  • 传统OFDM:高PAPR(例如,当N = 256时,理论PAPR为10\log_{10}(256) \approx 24dB)。
  • DFT-S-OFDM:通过频域扩展和子载波映射,信号类似单载波,PAPR显著降低(接近单载波的0 dB)。
  1. 仿真结果
  • 传统OFDM的CCDF曲线位于右侧(高PAPR概率大),DFT-S-OFDM的曲线左移,显示PAPR改善明显。

DFT-S-OFDM的优缺点

优点
缺点
PAPR接近单载波,适合功率受限场景
频谱效率略低于传统OFDM(需预留保护子载波)
兼容OFDM接收机设计
复杂度略高(需DFT预处理)

通过上述分析,DFT-S-OFDM通过频域扩展和子载波映射,在保持OFDM优势的同时显著降低PAPR,适用于上行链路等对功率效率要求高的场景。

(DFT-S-OFDM通过DFT预处理生成类似单载波的低PAPR信号,降低终端功率放大器(PA)的非线性失真风险,使PA能高效工作在接近饱和区,从而延长电池寿命并提升发射效率,尤其适合移动终端功率受限的上行链路场景,同时保留OFDM抗多径衰落和频域调度的优势。)

  • 传统OFDM,因为峰值功率很高,PA必须工作在远离饱和区的线性区域,以避免峰值部分被削波,从而产生失真。(对应下图前面)但这样效率低下,因为PA在低功率输出时效率较低。
  • DFT-S-OFDM,通过预编码技术,将信号转换成类似单载波的特性,PAPR较低,接近0 dB。这样PA可以工作在接近饱和区的非线性区域,此时PA的效率更高,因为饱和区附近是PA转换效率最高的区域。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号