基于神经网络的信号调制识别系统说明文档
项目介绍
本项目是一个基于 MATLAB 环境开发的自动调制识别(AMC)系统。系统通过深度学习技术,实现了对多种数字调制信号的自动化分类。其核心思想是直接利用信号的原始时域同相正交(I/Q)采样数据作为卷积神经网络(CNN)的输入,跳过了繁琐的人工特征提取过程,从而在复杂电磁环境下提取信号的深度抽象特征,实现高准确度的识别。该系统特别适用于认知无线电、频谱监测以及非协作通信等需要快速准确识别未知信号类型的场景。
功能特性
- 多调制格式支持:支持 BPSK、QPSK、8PSK、16QAM、64QAM、2ASK 和 4FSK 等七种典型数字信号。
- 端到端深度学习架构:利用卷积神经网络(CNN)提取 I/Q 数据的时空相关性,直接预测调制类别。
- 真实信道环境模拟:系统集成了多径瑞利衰落模拟和加性高斯白噪声(AWGN)添加,能够模拟真实无线传播中的信号偏差。
- 全自动化评估流程:具备从数据集生成、网络训练、模型保存到测试集性能统计的全流程自动化能力。
- 多维度性能可视化:自动生成识别准确率随信噪比(SNR)变化的动态曲线,并绘制归一化的混淆矩阵以分析各类别间的误判情况。
系统实现逻辑
系统运行遵循以下核心处理流程:
- 参数配置阶段:定义待识别的调制类型集合、每帧信号的采样点数(128点)、各调制类型的样本数量(1000帧)以及训练与测试的信噪比范围。
- 数据集构建:
- 循环生成各类调制信号的基础波形。
- 通过二径瑞利衰落滤波器模拟多径效应。
- 在 10dB 到 20dB 范围内随机选择信噪比,在信号中注入 AWGN 噪声。
- 对信号进行能量归一化处理。
- 将复数信号拆分为实部(I路)和虚部(Q路),构建为 2x128x1 的图像格式张量。
- 神经网络设计:
- 输入层:接收 2x128 的双路信号数据。
- 卷积层组:采用三层卷积结构。第一层使用 1x3 卷积核捕获时域特征;第二层使用 2x3 卷积核跨越 I/Q 两路提取空间相关性;第三层进一步增加通道数至 128 以提取高阶特征。
- 正则化与池化:每个卷积层后跟有批量归一化(BN)层和 ReLU 激活函数,通过最大池化层下采样降低计算量。
- 全连接输出:最后通过含有 Dropout 层的全连接网络,防止过拟合,并经由 Softmax 层输出概率分布。
- 模型训练:使用 Adam 优化算法,以 0.001 的初始学习率进行 15 轮次训练,并在训练过程中实时监控验证集的准确率。
- 性能统计与验证:在 -10dB 到 20dB 范围内以 2dB 为步长进行独立测试,计算每个 SNR 点下的识别成功率,量化系统在恶劣噪声环境下的鲁棒性。
关键函数与算法细节
- 信号生成算法:
- 针对相移键控(PSK)和幅移键控(ASK),通过映射随机序列至特定的星座点或电平实现。
- 针对频率键控(4FSK),通过累加离散频率偏移产生的相位来实现相位连续的频率调制。
- 针对正交幅度调制(QAM),实现了自适应的星座图映射函数,能够根据调制阶数(16/64)自动计算星座坐标并进行能量归一化。
- 信道模拟算法:
- 手动实现 AWGN 函数,通过计算信号平均功率并根据给定 SNR 计算所需的噪声标准差,产生复高斯白噪声。
- 使用随机生成的复衰落系数模拟多径环境。
- 卷积特征提取:
- 系统创新性地将 I/Q 分量排布在张量的两个行中,卷积核在宽度方向(时间维度)移动提取码元特征,而在高度方向(空间维度)移动则能捕捉实部与虚部之间的相位耦合关系。
- 可视化评估:
- 混淆矩阵生成逻辑:计算真实类别与预测类别的交叉统计矩,并进行行归一化处理,将数值标注在热图对应格子内。
使用方法
- 环境准备:确保安装了 MATLAB 2020b 或更新版本,并且已安装 Deep Learning Toolbox 以及 Signal Processing Toolbox。
- 启动程序:在 MATLAB 命令行窗口中定位到项目目录,直接运行主程序脚本。
- 训练过程:程序会自动弹出训练进度窗口,展示损失函数下降曲线和验证集准确率上升曲线。
- 查看结果:
- 训练完成后,模型将自动保存为 .mat 文件。
- 命令行窗口将实时输出各信噪比下的识别准确率。
- 程序最后会弹出两个图形窗口,分别展示“信噪比-准确率”曲线图和最终测试状态下的“调制识别混淆矩阵”。
系统要求
- 软件:MATLAB R2020b 及以上版本。
- 工具箱:Deep Learning Toolbox, Signal Processing Toolbox, Statistics and Machine Learning Toolbox。
- 硬件(推荐):支持 CUDA 的 NVIDIA GPU 以加速深度学习训练过程,若无 GPU,系统将自动使用 CPU 进行计算。