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