File Exchange

image thumbnail

Deep learning-based signal detection in OFDM systems

version 1.0.0 (580 KB) by - Narengerile
The long short-term memory (LSTM) network is used to create the deep neural network (DNN) for symbol classification at the receiver in OFDM.


Updated 31 Jul 2019

View License

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.

Cite As

- Narengerile (2020). Deep learning-based signal detection in OFDM systems (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (13)

aliaa said

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 or
Thanks a lot !


Wissam Damaj

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

Wissam Damaj

Muhammad Furqan Zia

you can write me at

Muhammad Furqan Zia

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.

Ravali Kankala

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);

Ravali Kankala

Li Yunzhou

Good works!



jaedon matz

Good work

MATLAB Release Compatibility
Created with R2019a
Compatible with any release
Platform Compatibility
Windows macOS Linux