This is an example of using the long short-term memory (LSTM) network in the Deep Learning Toolbox to achieve symbol classification at the receiver for signal detection in OFDM systems.
The LSTM-based neural network is trained for a single subcarrier, where the symbol error rate (SER) is calculated and compared with the least square (LS) and minimum mean square error (MMSE) estimations.
The wireless channel is assumed to be fixed during the offline training and the online deployment stages in this initial investigation. To test the robustness of the neural network, a random phase shift is applied for each transmitted OFDM packet.
The impacts of the number of pilot symbols and the length of the cyclic prefix (CP) are considered.
To recreate the simulation results, please load the corresponding mat file and run the script Testing.m.
The idea of this code is inspired by the paper:
H. Ye, G. Y. Li and B. Juang, "Power of Deep Learning for Channel Estimation and Signal Detection in OFDM Systems," in IEEE Wireless Communications Letters, vol. 7, no. 1, pp. 114-117, Feb. 2018.
- Narengerile (2020). Deep learning-based signal detection in OFDM systems (https://www.mathworks.com/matlabcentral/fileexchange/72321-deep-learning-based-signal-detection-in-ofdm-systems), MATLAB Central File Exchange. Retrieved .
Will you please support a Ph.D. student in trying to use your code for different channel model? We follow the same steps for the regular Rayleigh-fading model bu the BER curve provide non-realistic results
Could you please email me at
email@example.com or firstname.lastname@example.org
Thanks a lot !
Would you be willing to share how you created the channel matrix generated using the 3GPP TR38.901 channel model?
If you are could you please write me at email@example.com
you can write me at firstname.lastname@example.org
Seems good ! Can I use your code for my upcoming conference paper? Also I would like to connect with you if you can share your contact email?
Work Good!! How can it use for BPSK modulation instead of QPSK
. So that numbers of classes are 2.
arning: Variable 'Net' originally saved as a SeriesNetwork cannot be instantiated as an object and will
be read in as a uint32.
> In Testing (line 16)
Error using classify (line 149)
The length of GROUP must equal the number of rows in TRAINING.
Error in Testing (line 96)
YPred = classify(Net,XTest,'MiniBatchSize',MiniBatchSize);