基于BP神经网络的认知无线电频谱检测与预测及分配系统
项目简介
本项目是一个基于MATLAB开发的认知无线电(Cognitive Radio, CR)仿真系统。该系统利用BP(Back Propagation)神经网络解决频谱资源稀缺问题,实现了从物理层信号感知到链路层资源分配的完整闭环。项目模拟了多信道、多次级用户(SU)在低信噪比环境下的频谱竞争场景,通过智能学习主用户(PU)的行为模式,最大化系统的频谱利用率和通信吞吐量。
功能特性
- 信道环境仿真:基于马尔科夫链模拟主用户占用行为,支持多信道BPSK信号生成与AWGN信道模拟。
- 智能频谱感知:利用BP神经网络对接收信号的能量特征进行分类,实现低信噪比下的高精度状态识别(空闲/占用)。
- 时序频谱预测:构建时间序列BP预测模型,根据历史感知数据预测未来的信道状态,挖掘频谱空穴。
- 动态频谱分配:基于贪婪算法和信道增益优先策略,在避免干扰主用户的前提下,将空闲频谱动态分配给次级用户。
- 可视化评估:自动生成ROC曲线、训练收敛曲线、时序预测对比图、分配矩阵热力图及系统吞吐量曲线。
系统要求
- MATLAB R2016b及以上版本
- Deep Learning Toolbox (原 Neural Network Toolbox)
- Signal Processing Toolbox (推荐,用于基础信号处理)
使用方法
直接运行
main.m 函数即可启动仿真。程序将自动执行以下流程:初始化 -> 数据生成 -> 感知训练 -> 预测训练 -> 资源分配 -> 绘图统计。
代码实现逻辑与算法细节
本项目的所有核心逻辑均集成在 main.m 文件中,具体实现步骤如下:
1. 系统参数初始化与环境构建
程序首先配置仿真环境,设定信道数量(4个)、次级用户数量(3个)、总仿真时隙(2000个)以及低信噪比环境参数(-10dB)。设置随机种子以确保实验结果的可复现性。
2. 主用户信号建模与特征提取
- 状态模拟:使用两状态马尔科夫链(0-空闲,1-占用)生成每个信道的真实占用状态序列,通过状态转移概率矩阵控制空闲与忙碌的切换动态。
- 信号生成:对于占用状态的信道,生成BPSK调制信号;对于空闲信道,仅生成高斯白噪声。
- 能量检测:模拟能量检测法,在每个时隙内采集N个采样点(N=100),计算信号的归一化能量统计量。这是神经网络的原始输入特征。
3. 基于BP神经网络的频谱感知
系统构建了一个用于
分类的BP神经网络,目的是在已知能量特征的情况下判断信道状态。
- 数据预处理:将能量特征和真实状态重构为训练向量,并使用
mapminmax 进行[0, 1]归一化处理。 - 网络结构:使用
patternnet 或 feedforwardnet,包含一个隐含层(10个神经元)。 - 训练算法:采用 Levenberg-Marquardt (
trainlm) 算法,以均方误差(MSE)为目标函数进行监督学习。 - 性能评估:训练完成后,程序会在测试集上遍历不同的判决门限(0到1),计算检测概率(Pd)和虚警概率(Pf),并在后续绘图中生成ROC曲线。最终输出使用0.5作为硬判决阈值。
4. 基于BP神经网络的频谱状态预测
系统构建了一个用于
时间序列预测的BP神经网络,目的是根据历史感知结果预测下一时刻的状态。
- 滑动窗口构造:定义窗口大小(win_size=5),将前t-win到t-1时刻的感知结果作为输入,第t时刻的状态作为输出,构建监督学习数据集。
- 网络结构:采用双隐层结构(第一层15个神经元,第二层5个神经元),输出层使用
logsig 激活函数将结果限制在0到1之间。 - 训练算法:采用量化共轭梯度法 (
trainscg),更适合此类模式拟合任务。 - 多信道推广:虽然演示代码基于特定信道数据进行训练,但训练好的模型参数被推广应用于所有信道,根据各信道自身的历史数据独立预测其未来状态。
5. 动态频谱分配策略
系统实现了一个基于
贪婪算法的资源分配器。
- 可用性判断:仅针对预测结果为“空闲”的信道进行分配。
- 信道增益矩阵:模拟瑞利衰落,随机生成不同SU在不同信道上的信道增益。
- 分配逻辑:按照SU的优先级(索引顺序),每个SU选择其增益最大的可用空闲信道。一旦信道被占用,后续SU不可再选(避免同频干扰)。
- 吞吐量计算:利用香农公式计算系统总吞吐量。计算时会核对“真实状态”:如果预测为空闲分配了信道,但真实状态为占用(预测错误),则视为冲突,该次传输无效(吞吐量受损);只有预测与真实均为0时,才计入有效吞吐量。
6. 结果可视化
程序最后会生成四个图表窗口:
- 感知性能图:展示BP分类网络的训练MSE收敛曲线,以及反映检测性能的ROC曲线。
- 预测性能图:通过Stem图局部对比真实状态与神经网络预测状态,直观展示预测准确性。
- 分配矩阵图:使用热力图展示仿真最后阶段各信道被分配给哪个次级用户的情况。
- 系统吞吐量图:绘制随时间变化的系统总吞吐量曲线,并标注平均吞吐量。
控制台最后将输出统计信息,包括全网预测准确率以及当前的SNR和用户配置。