当前位置: 首页 > news >正文

基于LTE帧结构参数的F-OFDM仿真

基于LTE帧结构参数的F-OFDM仿真代码,包含详细的参数配置和频谱分析:

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal# 参数配置(LTE标准兼容)
subcarrier_spacing = 15e3        # 15 kHz子载波间隔
N_FFT = 2048                    # FFT点数
num_active_subcarriers = 1200    # 激活子载波数(对应18MHz带宽)
cp_length = 144                  # 循环前缀长度(采样点数)
symbols_per_frame = 14           # 每帧OFDM符号数(正常CP)
modulation_order = 4             # QPSK调制
filter_length = 101              # 滤波器抽头数(奇数保证对称)
fs = subcarrier_spacing * N_FFT  # 采样率30.72 MHz# 生成QPSK调制信号
bits_per_symbol = int(np.log2(modulation_order))
num_bits = symbols_per_frame * num_active_subcarriers * bits_per_symbol
bits = np.random.randint(0, 2, num_bits)# QPSK调制
symbols = (1/np.sqrt(2)) * ((2*bits[::2]-1) + 1j*(2*bits[1::2]-1))
symbols = symbols.reshape(symbols_per_frame, num_active_subcarriers)# 子载波映射(避开直流分量)
ofdm_symbols = np.zeros((symbols_per_frame, N_FFT), dtype=complex)
start_idx = (N_FFT - num_active_subcarriers) // 2
end_idx = start_idx + num_active_subcarriers
ofdm_symbols[:, start_idx:end_idx] = symbols# OFDM调制(IFFT)
time_symbols = np.fft.ifft(ofdm_symbols, axis=1) * N_FFT  # 保持功率一致# 添加循环前缀
cp = time_symbols[:, -cp_length:]  # LTE使用后缀作为CP
time_symbols_with_cp = np.hstack([cp, time_symbols])# 生成时域信号
tx_signal = time_symbols_with_cp.flatten()# 设计FIR滤波器(Hamming窗)
signal_bandwidth = num_active_subcarriers * subcarrier_spacing
cutoff_freq = signal_bandwidth / 2
nyquist = fs / 2
normalized_cutoff = cutoff_freq / nyquist
taps = signal.firwin(filter_length, normalized_cutoff, window='hamming')# 应用滤波器(保持功率归一化)
tx_signal_filtered = signal.lfilter(taps, 1.0, tx_signal)
tx_signal_filtered *= np.sqrt(N_FFT)/np.linalg.norm(taps)  # 功率补偿# 频谱分析
f, Pxx = signal.welch(tx_signal, fs=fs, nperseg=1024, return_onesided=False)
f_filt, Pxx_filt = signal.welch(tx_signal_filtered, fs=fs, nperseg=1024, return_onesided=False)# 绘图设置
plt.figure(figsize=(12, 6))
plt.plot(np.fft.fftshift(f)/1e6, 10*np.log10(np.fft.fftshift(Pxx)),label='OFDM', linewidth=2)
plt.plot(np.fft.fftshift(f_filt)/1e6, 10*np.log10(np.fft.fftshift(Pxx_filt)),label='F-OFDM', linewidth=2, linestyle='--')plt.xlim(-fs/2e6, fs/2e6)
plt.ylim(-100, -30)
plt.xlabel('Frequency (MHz)')
plt.ylabel('Power Spectral Density (dB/Hz)')
plt.title('OFDM vs F-OFDM Power Spectral Density (LTE Parameters)')
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()

关键特性说明:

  1. LTE参数兼容

    • 子载波间隔:15 kHz
    • 采样率:30.72 MHz(2048点FFT)
    • 循环前缀:144个采样点(对应4.69μs)
    • 激活子载波:1200个(中心对称分布,避开直流分量)
  2. F-OFDM实现

    • 使用Hamming窗FIR滤波器
    • 截止频率9 MHz(对应18MHz信号带宽)
    • 滤波器长度101抽头
    • 功率归一化补偿

    F-OFDM仿真代码,参数配置同lte帧结构

  3. 信号处理流程

    随机比特生成
    QPSK调制
    子载波映射
    IFFT变换
    添加循环前缀
    常规OFDM信号
    FIR滤波处理
    F-OFDM信号
  4. 性能比较

    • 频谱效率:F-OFDM相比OFDM具有更陡峭的带外衰减
    • 带外辐射:典型情况下可改善20-30dB
    • 计算复杂度:增加滤波器卷积运算(O(N)复杂度)

参数调整建议:

  1. 滤波器特性

    • 增加抽头数(filter_length)可提升阻带衰减
    • 使用Kaiser窗可获得更灵活的阻带控制
    • 尝试根升余弦滤波器改善符号间干扰
  2. 系统性能分析

    # 误码率分析扩展建议
    def add_channel(signal, snr_db):noise_pwr = 10**((10*np.log10(np.var(signal)) - snr_db)/10)noise = np.sqrt(noise_pwr/2)*(np.random.randn(*signal.shape)+1j*np.random.randn(*signal.shape))return signal + noise# 接收端处理流程
    def receiver_processing(rx_signal, filter_taps):# 实现匹配滤波、同步、FFT等处理pass
    

建议后续扩展方向:添加信道模型、同步算法和均衡模块以进行完整链路仿真。

相关文章:

  • RabbitMQ 消息模式实战:从简单队列到复杂路由(四)
  • Java大师成长计划之第24天:Spring生态与微服务架构之分布式配置与API网关
  • 如何备考GRE?
  • css:无限滚动波浪线
  • npm和nvm和nrm有什么区别
  • 机器视觉光源选型解析:照亮工业检测的“智慧之眼”
  • Springboot 异步场景 使用注解 @Async 及 自定义线程池分模块使用
  • LED点阵屏模块
  • WebSocket 客户端 DLL 模块设计说明(基于 WebSocket++ + Boost.Asio)
  • 【前端优化】vue2 webpack4项目升级webpack5,大大提升运行速度
  • Linux信号的保存
  • 裸金属服务器和云服务器之间的差别
  • Dify中使用插件LocalAI配置模型供应商报错
  • [Java][Leetcode middle] 238. 除自身以外数组的乘积
  • 挖o心得(1)
  • BUFDS_GTE2,IBUFDS,BUFG缓冲的区别
  • 技术解码 | 腾讯云SRT弱网优化
  • Vue3 加快页面加载速度 使用CDN外部库的加载 提升页面打开速度 服务器分发
  • sqli-labs靶场23-28a关(过滤)
  • WHAT - 缓存命中 Cache Hit 和缓存未命中 Cache Miss
  • 圆桌丨全球化博弈与人工智能背景下,企业如何落地合规体系
  • 定制基因编辑疗法治愈罕见遗传病患儿
  • 新片|《碟中谍8:最终清算》定档5月30日
  • 美联储主席:供应冲击或更频繁,将重新评估货币政策方法中的通胀和就业因素
  • 车主质疑零跑汽车撞车后AEB未触发、气囊未弹出,4S店:其把油门当刹车
  • 马上评|这种“维权”已经不算薅羊毛,涉嫌犯罪了