Skip to content

This work home of the PO-233 discipline at ITA shows how to use a machine learning for digital modulation classification.

License

Notifications You must be signed in to change notification settings

flaviol-souza/po-233-ita

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Um reconhecimento de modulação digital baseado em característica para rede assistidas por VANT em um aprendizado de máquina

GitHub watchers GitHub repo size Twitter Follow

This is the result of the work home of the PO-233 discipline at ITA

Description

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.

alt text

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.

Build With

  • Matlab (R2020b)
  • Jupyter Lab
    • Python
    • R

Installation

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

Usage

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

Contributing

To contribute to <project_name>, follow these steps:

  1. Fork this repository.
  2. Create a branch: git checkout -b <branch_name>.
  3. Make your changes and commit them: git commit -m '<commit_message>'
  4. Push to the original branch: git push origin <project_name>/<location>
  5. Create the pull request.

Alternatively see the GitHub documentation on creating a pull request.

Contributors

Thanks to the following people who have contributed to this project:

License

APACHE

About

This work home of the PO-233 discipline at ITA shows how to use a machine learning for digital modulation classification.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published