Um reconhecimento de modulação digital baseado em característica para rede assistidas por VANT em um aprendizado de máquina
This is the result of the work home of the PO-233 discipline at ITA
Inspired by Matlab`s example Modulation Classification with Deep Learning, this project has goals to identified the modulation schema by a machine learning. Implemented during the PO-233 discipline at ITA, I leave here the artifacts to reproduce the experiment.
Basically we generate 1000 frames to each digital modulation (8-PSK, 16-QAM, 64-QAM, BPSK, CPFSK, GFSK, QPSK and PAM4) on Matlab according to Modulation Classification with Deep Learning.
The frames produced has noises into signals as can be observed in Waves with Noises 1 and 2 figures. The waves are available on dataset/origin.
After we transform the bandpass signal to the time domain, we applied to diversify technics (Fourier and Wavelet transform, Statistical Features, Constellation Shape Features, Cyclostationarity, Zero-crossing, and S transform)) to extract the main features of the signal. It that result a new dataset available on dataset/transform. The dataset have 8000 frames (samples) with 7.192 features.
- Matlab (R2020b)
- Jupyter Lab
- Python
- R
Use the package manager R to install foobar.
install.packages("R.matlab")
install.packages("wavelets")
install.packages("tuneR")
install.packages("seewave")
install.packages("data.table")
install.packages("GENEAread")
devtools::install_github("marksendak/constellation")
install.packages("constellation")
Use o scikit-learn no ambiente de acordo com o tutorial, check here It's yet needed to install some packages on Python:
pip install mlxtend
pip install seaborn
To use <project_name>, follow these steps:
Step 1
- Open the Matlab and execute the waveform_generation.m script
- Copy the files results (frame*.mat) to database/origin
Step 2
- Open the transformData.ipynb file on Jupyter Lab and run it.
- Check if there are 1 file at database/transform
Step 3
- Execute the model analysis script to get the performance of Decision Tree and Random Forest
To contribute to <project_name>, follow these steps:
- Fork this repository.
- Create a branch:
git checkout -b <branch_name>
. - Make your changes and commit them:
git commit -m '<commit_message>'
- Push to the original branch:
git push origin <project_name>/<location>
- Create the pull request.
Alternatively see the GitHub documentation on creating a pull request.
Thanks to the following people who have contributed to this project:
- Flavio Souza e-mail or web profile
- Felipe Verri (Advisor) e-mail or web profile
- Lourenço Junior (Advisor) e-mail