matlab产生GFDM信号并于OFDM进行PAPR比较

matlab产生GFDM信号并于OFDM进行PAPR比较

  1. GFDM 基带信号产生
  2. 等参数 OFDM 基带信号产生
  3. 两者的 PAPR 计算与 CCDF 曲线对比

子载波数、原型滤波器、调制方式均可自由调整。


1.参数设置

clc; clear; close all;

%% 公共参数
Nsc  = 64;               % 子载波数
M    = 9;                % 每子载波子符号数(仅 GFDM 使用)
modO = '16QAM';          % 调制方式
os   = 4;                % 过采样因子(用于精确 PAPR)
numMonte = 1e4;          % 蒙特卡洛符号数

2. GFDM 信号产生函数

function [tx, d] = gfdm_tx(Nsc, M, modOrder, os)
    K = Nsc; N = K*M;               % 总采样点数
    d = qam(randi([0 15], N, 1), 16, 'UnitAveragePower', true); % 16-QAM
    d = reshape(d, K, M);           % K×M 矩阵
    % 原型滤波器:升余弦 α=0.5
    alpha = 0.5;
    g = rcosdesign(alpha, 4, M, 'sqrt'); g = g/sqrt(sum(g.^2));
    % GFDM 调制矩阵
    A = zeros(N, N);
    for k = 0:K-1
        for m = 0:M-1
            col = k*M + m + 1;
            A(:,col) = (circshift(g, m*K) .* exp(1j*2*pi*k*(0:N-1)'/K));
        end
    end
    tx = A * d(:);
    % 过采样
    tx = interp(tx, os);
end

3. OFDM 信号产生函数

function [tx, d] = ofdm_tx(Nsc, modOrder, os)
    d = qam(randi([0 15], Nsc, 1), 16, 'UnitAveragePower', true);
    tx = ifft(d, Nsc);
    % 加 CP(1/8 长度)
    cpLen = Nsc/8;
    tx = [tx(end-cpLen+1:end); tx];
    % 过采样
    tx = interp(tx, os);
end

4. PAPR 与 CCDF 计算

paprGFDM = zeros(numMonte, 1);
paprOFDM = zeros(numMonte, 1);

for n = 1:numMonte
    % GFDM
    [gfdmSym, ~] = gfdm_tx(Nsc, M, modO, os);
    paprGFDM(n) = 10*log10(max(abs(gfdmSym)).^2 / mean(abs(gfdmSym).^2));

    % OFDM
    [ofdmSym, ~] = ofdm_tx(Nsc, modO, os);
    paprOFDM(n) = 10*log10(max(abs(ofdmSym)).^2 / mean(abs(ofdmSym).^2));
end

5. 结果可视化

figure;
ecdf(paprGFDM); hold on;
ecdf(paprOFDM);
grid on; xlabel('PAPR [dB]'); ylabel('CCDF');
legend('GFDM','OFDM');
title(sprintf('Nsc=%d, M=%d, %s', Nsc, M, modO));

6. 典型结论(与文献一致)

  • GFDM 平均 PAPR 比 OFDM 低 1–3 dB(因原型滤波器抑制峰值)
  • CCDF 曲线左移 → 功率放大器可工作于更小回退区间,提升效率
  • 参考代码 产生GFDM信号并于OFDM进行PAPR比较 www.youwenfan.com/contentcne/65527.html

把上述代码保存为 main_papr_gfdm_vs_ofdm.m 即可一键运行。

posted @ 2025-08-26 12:33  康帅服  阅读(16)  评论(0)    收藏  举报