【MATLAB源码】F-OFDM:链路级仿真平台
🌐 F-OFDM 滤波正交频分复用仿真平台
新型候选波形技术完整实现子带滤波 (Subband Filtering) + 超低带外泄漏 + 灵活参数集支持
📌 为什么选择 F-OFDM?
在 多业务共存、异构网络和 动态频谱接入 场景下,传统 CP-OFDM 波形面临严重的带外辐射问题,导致保护带开销大、频谱效率低。本平台基于 F-OFDM (Filtered-OFDM) —— 3GPP TR 38.802 研究的新型候选波形技术,通过子带滤波实现超低带外泄漏。
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
🎯 核心价值
🔬 学术研究价值
|
💼 工程应用价值
|
⚡ 技术亮点
🌊 F-OFDM vs CP-OFDM 对比
|
|
|
F-OFDM (本平台) |
|---|---|---|
| 带外泄漏 |
|
-45 ~ -80 dB |
| 保护带 |
|
极小 (1-2 子载波) |
| 参数集灵活性 |
|
多子带独立配置 |
| 异步传输 |
|
完全支持 |
| 实现复杂度 |
|
|
📊 性能指标 (实测数据)
基于
demo_psd_comparison.m和demo_ofdm_vs_fofdm.m实测结果
|
|
|
F-OFDM |
|
|---|---|---|---|
|
|
|
-84 dB |
|
|
|
|
0 |
|
|
|
|
~1e-4 |
|
|
|
|
+10-15% |
|
🎛️ PAPR 降低效果
|
|
|
|
|---|---|---|
|
|
10.5 dB |
|
|
|
10.1 dB |
|
|
|
6.7 dB |
|
|
|
3.7 dB |
|
🖥️ 运行环境
MATLAB 版本要求
|
|
|
|
|---|---|---|
| MATLAB |
|
|
依赖工具箱
|
|
|
|
|---|---|---|
| Signal Processing Toolbox |
|
|
| Communications Toolbox |
|
|
📁 项目结构
F-OFDM/├── core/ # 🔧 核心算法模块 (11)│ ├── fofdm_modulator.m # F-OFDM 调制器│ ├── fofdm_demodulator.m # F-OFDM 解调器│ ├── fofdm_modulator_mimo.m # MIMO 调制器│ ├── fofdm_demodulator_mimo.m # MIMO 解调器│ ├── ofdm_modulator.m # CP-OFDM 调制器 (对比)│ ├── ofdm_demodulator.m # CP-OFDM 解调器 (对比)│ ├── design_subband_filter.m # 窗函数滤波器设计│ ├── design_filter_ls.m # LS 滤波器设计│ ├── design_filter_pm.m # PM 滤波器设计│ ├── channel_estimation.m # 信道估计 (LS/LMMSE)│ └── channel_equalization.m # 信道均衡 (ZF/MMSE)│├── channel/ # 📡 信道模型 (5)│ ├── awgn_channel.m # AWGN 信道│ ├── tdl_channel.m # 3GPP TDL 信道│ ├── multipath_channel.m # EPA/EVA/ETU 多径信道│ ├── mimo_channel.m # MIMO 空间信道│ └── doppler_spectrum.m # 多普勒频谱生成│├── utils/ # 🛠️ 工具函数 (10)│ ├── qam_modulate.m # QAM 调制│ ├── qam_demodulate.m # QAM 解调│ ├── calculate_ber.m # BER 计算│ ├── calculate_papr.m # PAPR 计算│ ├── papr_ccdf.m # PAPR CCDF 统计│ ├── papr_reduction.m # PAPR 降低技术│ ├── generate_pilot_pattern.m # 导频图案生成│ ├── precoding.m # MIMO 预编码│ ├── fast_conv_ola.m # 快速卷积 (OLA)│ └── fast_conv_ols.m # 快速卷积 (OLS)│├── demo/ # 🎬 演示脚本 (11)│ ├── main_fofdm_simulation.m # 完整链路仿真│ ├── demo_psd_comparison.m # 频谱对比│ ├── demo_ber_comparison.m # BER 对比│ ├── demo_multiband.m # 多子带传输│ ├── demo_channel_equalization.m # 信道估计与均衡│ ├── demo_doppler_effect.m # 多普勒效应│ ├── demo_mimo.m # MIMO 系统│ ├── demo_filter_comparison.m # 滤波器对比│ ├── demo_ofdm_vs_fofdm.m # 完整系统对比│ ├── demo_complexity.m # 复杂度分析│ └── demo_papr.m # PAPR 分析│├── tests/ # ✅ 测试脚本│ └── test_all.m # 单元测试│├── docs/ # 📚 文档│ ├── 算法文档.md # 理论推导│ ├── 代码文档.md # API 参考│ ├── 项目文档.md # 产品介绍 (本文档)│ └── figures/ # 仿真结果图片 (18张)│├── run_all_tests.m # 🧪 完整测试套件└── run_all_demos.m # 🎥 批量演示脚本
🔬 算法原理
系统架构图
┌─────────────────────────────────────────────────────────────────────┐│ F-OFDM 发射端 │├─────────────────────────────────────────────────────────────────────┤│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌───────┐ ││ │ 数据源 │──▶│ QAM │──▶│ IFFT │──▶│ 加CP │──▶│子带滤波│─┐││ └─────────┘ │ 调制 │ │ │ │ │ └───────┘ │││ └─────────┘ └─────────┘ └─────────┘ │ ││ ▼ ││ ┌───────┐ ││ │ 发射 │ ││ └───────┘ │└─────────────────────────────────────────────────────────────────────┘ │ ▼ 无线信道 (TDL/AWGN) │┌─────────────────────────────────────────────────────────────────────┐│ F-OFDM 接收端 │├─────────────────────────────────────────────────────────────────────┤│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌───────┐ ││ │ 接收 │──▶│匹配滤波 │──▶│ 去CP │──▶│ FFT │──▶│ 均衡 │──┘││ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └───────┘ ││ │ ││ ▼ ││ ┌─────────┐ ┌─────┐ ││ │ QAM解调 │◀─│数据 │ ││ └─────────┘ └─────┘ │└─────────────────────────────────────────────────────────────────────┘
核心数学公式
子带滤波器设计(Sinc + 窗函数):
其中:
-
为归一化截止频率 -
为窗函数 (Hanning/Blackman/Kaiser)
F-OFDM 调制:
信道估计 (LMMSE):
📸 仿真结果演示

















💻 核心代码展示
🔥 F-OFDM 调制器 (core/fofdm_modulator.m)
function[waveform, info] = fofdm_modulator(subbandGrid, config)% FOFDM_MODULATOR F-OFDM 子带调制器%% 核心步骤:% 1. 资源网格映射 (子载波居中)% 2. IFFT + 循环前缀添加% 3. 子带滤波 (Sinc + 窗函数)% 4. 频率偏移 (多子带场景)% 设计子带滤波器 [h, ~] = design_subband_filter(Nfft, numSC, filterLen, windowType);% OFDM 调制 (IFFT + CP) ofdmWaveform = sqrt(Nfft) * ifft(ifftshift(fftGrid, 1)); ofdmWaveform = [ofdmWaveform(end-cpLength+1:end, :); ofdmWaveform];% 子带滤波 (核心!) waveform = conv(ofdmWaveform(:), h, 'full');% 频率偏移 (支持多子带) n = (0:length(waveform)-1)'; waveform = waveform .* exp(1j * 2 * pi * offset / Nfft * n);end
🌟 子带滤波器设计 (core/design_subband_filter.m)
function[h, info] = design_subband_filter(Nfft, numSC, filterLen, windowType)% DESIGN_SUBBAND_FILTER F-OFDM 子带滤波器设计%% 方法: Sinc 滤波器 + 窗函数截断% 目标: 通带平坦, 阻带衰减 > 40dB% 归一化截止频率 (带过渡带扩展) f_cutoff = (numSC / Nfft) * 1.1;% Sinc 滤波器 (理想低通) n = -(filterLen-1)/2 : (filterLen-1)/2; h_sinc = f_cutoff * sinc(f_cutoff * n);% 加窗 (抑制旁瓣) w = hanning(filterLen); h = h_sinc(:) .* w(:);% 归一化 DC 增益为 1 h = h / sum(h);end
🚀 PAPR 降低 (utils/papr_reduction.m)
function[signal_out, info] = papr_reduction(signal, method, params)% PAPR_REDUCTION PAPR 降低技术%% 支持方法:% 'clipping' - 硬限幅% 'clipping_filtering' - 限幅 + 带外滤波% 'companding' - μ律压扩% 'slm' - 选择性映射switch methodcase'clipping'% 幅度限幅: |x| > A_max 时截断 threshold = sqrt(params.clippingRatio * avgPower); signal_out = min(abs(signal), threshold) .* exp(1j * angle(signal));case'slm'% 生成 U 个候选, 选 PAPR 最小者for u = 1:numCandidates phaseSeq = exp(1j * 2 * pi * rand(N, 1)); candidate = ifft(fft(signal) .* phaseSeq);if calculate_papr(candidate) < minPapr signal_out = candidate;endendendend
🎬 一键运行
>> cd d:\03_代码库\04.code4sale\2.F-OFDM% 完整测试 (15 项单元测试 + 图片生成)>> run_all_tests% 所有演示 (11 个脚本 + 18 张图片)>> run_all_demos% 单独运行>> demo_papr % PAPR 分析>> demo_psd_comparison % 频谱对比>> demo_mimo % MIMO 系统
快速验证
% 验证 F-OFDM 回环addpath('core', 'utils');config.Nfft = 1024; config.numSubcarriers = 128; config.numSymbols = 14;txGrid = qam_modulate(randi([01], 128*14*4, 1), 16);[wf, ~] = fofdm_modulator(reshape(txGrid, 128, 14), config);[rxGrid, ~] = fofdm_demodulator(wf, config);fprintf('回环误差: %.4f\n', mean(abs(txGrid - rxGrid(:)))); % 应 < 0.05
📚 文档体系
本平台提供 “算法+代码+产品” 三维文档:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
🛒 获取方式
📚 参考文献
[1] 3GPP TR 38.802: “Study on New Radio Access Technology Physical Layer Aspects” (F-OFDM 标准研究)
[2] 3GPP TS 38.211: “NR; Physical channels and modulation” (5G NR 物理层规范)
[3] X. Zhang et al., “Filtered-OFDM – Enabler for Flexible Waveform in the 5th Generation Cellular Networks,” IEEE GLOBECOM 2015. (F-OFDM 核心论文)
[4] J. Abdoli et al., “Filtered OFDM: A new waveform for future wireless systems,” IEEE SPAWC 2015. (F-OFDM 开山论文)
[5] Y. S. Cho et al., “MIMO-OFDM Wireless Communications with MATLAB,” Wiley, 2010. (MIMO-OFDM 教材)
[6] A. V. Oppenheim, “Discrete-Time Signal Processing,” 3rd Edition. (数字信号处理经典)
夜雨聆风
