This past week I have been working on two main programs.  data_generate.py generates training data, while scf_ann.py trains an ANN and then tests it, producing a percentage accuracy figure.

Apologies for the delayed update, I have had problems training the ANN, which, as was pointed out to me, was due to feeding in too few training samples.


The following flow graph shows how this python script generates and stores data from a modulator.  We make use of the multiply const and noise source with appropriate values to change the SNR from -20dB to 20dB.


We concentrate on four modulation techniques “2psk”,”4psk”,”8psk”,”fsk”, generating datasets with SNRs ranging from 20dB to -20dB for each modulation scheme.

We generated 2 lots of training data.


An ANN was created through the use of TensorFlow.  We feed in the 2D output from the SCF to the ANN.  We make use of a single hidden layer, which has int(number_of_inputs * 0.89) neurons, which was found through experimentation.


The following graph depicts the accuracy with different SNR of testing samples, for all 4 modulation schemes.  422 testing samples where used for each test at a specific SNR.


I believe the accuracy can be improved through more experimentation with the neural network.

All the testing was done with 2 Samples / Symbol, I need to compare results with differing values for that.

I will now work on making a GNU Radio block, to produce an output with the probabilities for each modulation scheme.

See https://github.com/chrisruk/scf/ for the code



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s