项目:基于OFDM信号能量检测的认知无线电频谱感知仿真系统
项目介绍
本项目是一个基于MATLAB开发的认知无线电(Cognitive Radio)频谱感知仿真平台。其核心目标是模拟和评估次级用户在复杂的无线电环境下,如何利用能量检测(Energy Detection)技术识别特定频段内是否存在授权(主)用户的正交频分复用(OFDM)信号。频谱感知是实现动态频谱接入、提高频谱资源利用率的关键步骤。系统通过对接收到的信号能量进行统计和判决,实现在高斯白噪声干扰下对信道占用状态的有效识别。
功能特性
- 标准OFDM信号模型构建:系统能够生成完整的OFDM信号,包括QPSK子载波调制、IFFT变换、循环前缀(CP)添加以及信号功率归一化。
- 动态信噪比仿真环境:支持在指定的信噪比(SNR)范围内进行多点仿真,模拟信号在不同信道质量下的衰落情况。
- 统计学阈值判定:基于设定的虚警概率(Pf),利用Q函数的逆函数实时计算理论判决阈值。
- 蒙特卡洛统计分析:执行上千次独立实验以消除随机噪声影响,获取准确的检测概率(Pd)。
- 性能评估可视化:自动生成信号时频特征、能量分布直方图、Pd-SNR性能曲线以及ROC(接收者操作特性)曲线。
- 自动状态报表:根据检测结果自动生成仿真报告,评价感知系统的可靠性。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 核心函数需求:需要支持通信工具箱(Communication Toolbox)和信号处理工具箱(Signal Processing Toolbox)的基本数学函数。
实现逻辑分析
仿真过程严格遵循信号处理与统计决策流程,主要逻辑如下:
- 参数初始化
系统预设了子载波数量(64)、循环前缀(16)、调制阶数(QPSK)及观察窗口内的OFDM符号数(15)。总采样点数由符号数与单个符号长度的乘积决定,作为能量累加的基数。
- OFDM参考信号生成
通过随机位生成、QPSK映射、IFFT计算及CP拼接,生成用于时域和频域分析的基带信号,并进行功率归一化处理,以便于后续信噪比的精确控制。
- 能量检测算法实现
检测器在每个感知周期内对接收序列执行平方求和运算,得到能量统计量。系统分别模拟了两种假设情况:
- H0假设:接收信号仅包含加性高斯白噪声。
- H1假设:由于OFDM信号由大量相互独立的子载波叠加而成,根据中心极限定理,信号在时域展现出复高斯分布特性。仿真中使用等功率的复高斯分布模拟接收到的信号加噪声。
- 概率计算与统计
系统在每个信噪比点下运行1000次蒙特卡洛循环。通过对比实时能量统计量与基于高斯近似理论推导出的阈值,统计检测成功的次数,从而计算Pd。
- 性能曲线绘制
- Pd vs SNR:展示随着信号强度增强,检测准确率的提升趋势。
- 能量分布:展示在固定信噪比下,H0和H1两种状态下能量统计量的概率密度重叠情况,直观反映阈值的物理意义。
- ROC曲线:保持信噪比固定,动态调整虚警概率,观察检测概率与虚警概率之间的权衡关系。
关键函数与算法说明
- 能量统计量计算
系统采用非相干检测逻辑,计算公式为接收信号幅度的平方和。这是一种盲检测方法,不需要了解主用户的任何先验信息(如训练序列、调制方式等)。
- 判决阈值公式
阈值的确定基于虚警概率Pf和噪声功率。仿真中使用的是基于正态分布近似的公式。当采样点数较大时,能量统计量趋于正态分布,利用qfuncinv函数可以精确找到满足Pf要求的临界点。
- 辅助数学函数
- qfunc:计算正态分布的右尾概率,用于获得理论检测概率。
- qfuncinv:用于从预设概率反推阈值位置。
- ternary:自定义逻辑判断函数,用于根据检测率质量输出状态文本(如“感知可靠”或“信噪比过低”)。
- 功率谱估计
使用periodogram函数计算信号的功率谱密度,用于直观验证OFDM信号的频谱特性是否符合标准。
使用方法
- 启动MATLAB并进入项目所在路径。
- 直接运行main.m函数即可开始仿真。
- 系统将首先弹出OFDM信号波形图,随后依次计算各SNR点下的性能参数。
- 仿真结束后,MATLAB命令行窗口将输出详细的仿真报表,并展示三张核心性能分析图表。
- 开发者可以通过修改参数设置部分的N_samples或Pf_target,测试不同感知时间或不同灵敏度要求下的系统表现。