Engineering Portfolio
MATLAB 数字调制识别仿真系统
生成五类调制信号,在 AWGN 与多信噪比条件下提取特征并比较 RBF-SVM 和 KNN。
项目简介
项目使用 MATLAB 生成 ASK、FSK、BPSK、QPSK 和 16QAM 五类信号,在不同 SNR 下加入 AWGN,提取幅度、相位、频率变化和高阶累积量特征,并比较 RBF-SVM 与 KNN 的调制识别效果。
项目目标
- 建立统一的五类调制信号数据生成流程。
- 覆盖
-10:2:20 dB的噪声条件。 - 形成训练集、测试集、特征表、准确率曲线和混淆矩阵。
- 用 SVM 作为主分类器、KNN 作为对照组。
使用技术
MATLAB 复数基带建模、AWGN、幅相频特征、高阶累积量、RBF-SVM、ECOC 多分类、KNN、混淆矩阵和 CSV/MAT 结果导出。
硬件环境
本项目是离线仿真,不依赖专用硬件。普通能够运行 MATLAB 和 Statistics and Machine Learning Toolbox 的电脑即可执行。
软件环境
- MATLAB。
- Statistics and Machine Learning Toolbox,用于
fitcecoc、templateSVM和fitcknn。 - 入口为
run_modulation_recognition.m,结果输出到results/。
系统架构
脚本分为参数配置、信号生成、加噪、特征提取、数据集构建、模型训练、预测评估和结果导出八个阶段。训练集与测试集按调制类型和 SNR 生成,特征矩阵统一标准化后分别送入 SVM 与 KNN。
功能模块
- 五类调制信号生成和功率归一化。
- 复高斯噪声注入。
- 17 维幅度、相位、频率和累积量特征。
- SVM/KNN 训练、逐 SNR 准确率和 10 dB 混淆矩阵。
- 时域、频谱、星座、CSV、MAT 和论文材料输出。
实现步骤
- 固定随机种子并定义 SNR、采样率和帧长度。
- 为每类调制生成归一化复基带帧。
- 依据目标 SNR 计算并加入复高斯噪声。
- 提取 17 维特征并构造训练/测试集。
- 训练 RBF-SVM 和
k=5的 KNN。 - 输出准确率、混淆矩阵、特征数据和模型文件。
关键代码
src/run_modulation_recognition.m:AWGN 注入
噪声功率由信号功率和目标 SNR 直接计算:
noisePower = signalPower / (10^(snrDb / 10));
noise = sqrt(noisePower / 2) * (randn(size(signal)) + 1j * randn(size(signal)));
noisy = signal + noise;
src/run_modulation_recognition.m:特征与分类器
信号先归一化,再计算相位差分与高阶累积量;训练阶段同时建立 SVM 和 KNN 作为对照:
z = signal(:);
z = z / sqrt(mean(abs(z).^2) + eps);
zCentered = z - mean(z);
phaseStep = wrapToPiLocal(diff(unwrap(angle(z))));
m20 = mean(zCentered.^2);
m40 = mean(zCentered.^4);
c40 = m40 - 3 * m20^2;
svmModel = fitcecoc(XTrain, YTrain, ...
"Learners", templateSVM("KernelFunction", "rbf", "Standardize", true), ...
"Coding", "onevsone");
svmPred = predict(svmModel, XTest);
调试过程
先检查每类信号的时域、频谱和星座,再核对特征是否出现 NaN 或量纲异常;随后分别观察低 SNR 与高 SNR 的混淆矩阵,确认模型提升来自信噪比变化而不是数据泄漏。
遇到的问题
- 五类调制的幅度尺度不同,会让分类器过度依赖能量。
- 低 SNR 下相位与频率差分特征波动明显。
- 多分类 SVM 不能直接使用单个二分类器完成。
解决方案
每帧按平均功率归一化;同时使用幅度统计、相位差分和高阶累积量形成互补特征;通过 fitcecoc 采用 one-vs-one 编码组织多个 RBF-SVM 学习器。
最终效果
仓库结果显示 SVM 在 4 dB 后准确率接近 100%,6 dB 后达到 100%;KNN 在高 SNR 下表现良好,但低 SNR 稳定性较弱。工程输出逐 SNR 准确率、五类星座、两种混淆矩阵、完整特征表和模型文件。
项目总结
该项目形成了可重复的通信信号机器学习实验链路,并清楚保留参数、数据、模型和图表。结果属于仿真数据上的识别性能,不等同于真实射频采集环境。