Engineering Portfolio
MATLAB Digital Modulation Recognition Simulation
Generates five modulation classes, extracts features across AWGN and multiple SNR values, and compares RBF-SVM with KNN.
Project Overview
MATLAB generates ASK, FSK, BPSK, QPSK and 16QAM signals, adds AWGN over multiple SNR values, extracts amplitude, phase, frequency-change and higher-order cumulant features, then compares RBF-SVM and KNN classification.
Project Goals
- Use one repeatable data-generation pipeline for all five classes.
- Cover noise conditions from
-10:2:20 dB. - Produce training and test sets, feature tables, accuracy curves and confusion matrices.
- Use SVM as the main model and KNN as a baseline.
Technology and Environment
MATLAB complex-baseband modeling, AWGN, amplitude/phase/frequency features, higher-order cumulants, RBF-SVM, ECOC multiclass classification, KNN, confusion matrices and CSV/MAT exports. It is an offline simulation requiring MATLAB and Statistics and Machine Learning Toolbox, not dedicated hardware.
System Architecture
The script moves through configuration, waveform generation, noise injection, feature extraction, dataset construction, training, prediction and export. Training and test frames are generated by class and SNR, standardized and sent independently to SVM and KNN.
Functional Modules
- Five normalized complex-baseband waveform generators.
- Complex Gaussian noise injection.
- Seventeen amplitude, phase, frequency and cumulant features.
- SVM/KNN training, per-SNR accuracy and a 10 dB confusion matrix.
- Waveform, spectrum, constellation, CSV, MAT and report exports.
Implementation
- Fix the random seed and define SNR, sample rate and frame length.
- Generate normalized frames for every modulation.
- Compute noise power from signal power and target SNR.
- Extract 17 features and build independent train/test sets.
- Train an RBF-SVM ECOC model and
k=5KNN. - Export accuracy, confusion matrices, feature data and model files.
Key Code
Noise power follows directly from the SNR definition:
noisePower = signalPower / (10^(snrDb / 10));
noise = sqrt(noisePower / 2) * (randn(size(signal)) + 1j * randn(size(signal)));
noisy = signal + noise;
Frames are power-normalized before phase differences and cumulants are computed. fitcecoc organizes the RBF-SVM learners in a one-vs-one multiclass model.
Debugging and Verification
Waveforms, spectra and constellations were inspected before feature ranges and NaN checks. Low- and high-SNR confusion matrices were then compared to ensure that gains followed changing SNR rather than train/test leakage.
Problems and Solutions
Different modulation amplitudes can let a classifier rely on energy alone, while low SNR destabilizes phase and frequency differences. Per-frame power normalization and complementary amplitude, phase and cumulant features reduce those effects. ECOC supplies the necessary multiclass organization for binary SVM learners.
Current Result
Repository results show SVM accuracy approaching 100% after 4 dB and reaching 100% after 6 dB. KNN performs well at high SNR but is less stable at low SNR. The project exports per-SNR accuracy, five constellations, two confusion matrices, the complete feature table and trained models.
Summary
This is a reproducible machine-learning workflow for communication signals with parameters, data, models and figures retained. Its reported accuracy applies to simulated data and is not equivalent to recognition on real RF captures.