基于深度学习的OFDM接收机

首先想指明一下,这是一个通信原理课程的三级项目,并不十分完善,希望对你有指导意义。

仿真环境:Python3.8 + TensorFlow2.4

仿真代码:https://pan.baidu.com/s/1Y3yaccwIFWmXN68gaIaf4Q?pwd=eda6 
提取码:eda6 

 

一、深度学习

        深度学习,这个词大家应该都听说过,一听到还很有高级感。在网上搜素资料,我总结了一下:深度学习是基于人工神经网络的更广泛的机器学习方法族的一部分。第一点,深度学习是机器学习的一部分;第二点,深度学习是以人工神经网络为基础的。何为人工神经网络?可以和人的神经网络做一下对比:

基于深度学习的OFDM接收机_第1张图片       基于深度学习的OFDM接收机_第2张图片

        在这次的仿真中使用到的神经网络主要是深度神经网络(DNN)。

        简单的理解就是: 中间的隐藏层越多(也就是算法越复杂),能完成的功能越强大。

二、OFDM接收机

        下面是OFDM的结构框图,真正的接收是在过了信道以后。

基于深度学习的OFDM接收机_第3张图片

        OFDM,正交频分复用:

基于深度学习的OFDM接收机_第4张图片

三、深度学习+OFDM

        根据无线通信与深度学习结合的经典之作《Power of Deep Learning for Channel Estimation and Signal Detection in OFDM Systems》,以及对应的源码来进行仿真。


论文题目: Power of Deep Learning for Channel Estimation and Signal Detection in OFDM Systems
论文地址: https://ieeexplore.ieee.org/document/8052521/
github源码地址: https://github.com/haoyye/OFDM_DNN



        简单介绍一下它的模型:

  1. 中心思想:用神经网络来代替传统OFDM通信中的信道估计和信号检测部分。
  2. 具体实现: 

    1. 输入一个接收机已知的信号x1(记为导频信号);
    2. 记接收到的信号为y1,那么:y1/x1=h(x),得出信道传输函数;
    3. 输入接收机未知的数据信号x2,利用已经求出的h(x),接收机:x2=y2/h(x);
    4. 具体模型中,数据信号和导频信号同时输入,然后经过神经网络的运算,在接收端还原根据算法原理误差最小的数据信号。

基于深度学习的OFDM接收机_第5张图片

 基于深度学习的OFDM接收机_第6张图片

四、心得

        做这个仿真时,只是刚学完通信原理这门课,学得也是一知半解,OFDM这部分老师也让自学。而且虽然之前听说过深度学习,但从没接触过。好在在网上找到了对应的代码,但是代码的年龄有点久远,它最初是在Python2.7+ubuntu16.0上运行成功的。现在Windows都下载不到Python2.7了,虽然ubuntu上的Linux操作系统里能下,但如何运行我也是一窍不通,试过了,但被吓退了。然后就在Python3.8上捣鼓,单单是安装那些个依赖库,我都废寝忘食弄了三四天,然后又由于版本的问题,有些函数得改:报一个错,弄一天改过来;再报一个错,又弄一天改过来......

这种不断改错不断报错的“辛酸”历程,只好以“路漫漫其修远兮,吾将上下而求索”聊以自慰。

        另外,由于电脑性能一般,但是得先进行线下训练才能进行仿真,而线下训练需要GPU,所以使用的线下数据是在GitHub上找到的,只是用电脑进行了仿真。我修改的源码和所使用的数据都在我最前面提供的源码地址里。

        做这个项目的时间不长,时间很紧张,每天从早到晚对着电脑改改改,而且成就感很低,要花很长的时间才能解决一个小问题,所以很考验心态。当然了,因为我是小白,所以才一切都不容易,对经验丰富的大佬来说或许能很快解决。这个过程真的很辛苦,但拓宽了自己的知识域,也是一种挑战,反正平庸着也是平庸着,不如试试。

你可能感兴趣的:(深度学习,深度学习,经验分享)