当前位置:   article > 正文

python实现lstm_利用Python搭建无线通信仿真系统(二)

ofdm用python仿真

利用Python搭建通信系统时,有些内置函数我们很难用Python实现,因此对于这些函数,我们可以通过MATLAB中的Python API通过Python调用这些函数,前面我们已经介绍了怎么在Python上安装MATLAB引擎。我们所需要搭建的无线通信系统框图如图1所示。

17d770b5244de9d302aab57f9d2e571a.png

前面我们介绍了通信系统中的调制解调部分。接着,将调制后传输信号按一定的帧结构组成物理帧,在LTE协议中,物理帧中的最小单元称为“资源元素”,即为每一个调制后的符号,所有资源元素构成资源网格。资源元素映射是按一定的映射规则将数据符号和导频符号映射到资源网格中相应的位,其中数据符号为比特流调制后的信号,导频符号为接收双方知晓的参考信号,这里我们随机生成一定数量的比特信号,然后通过QPSK调制成发送的频域导频符号,其函数如下所示

8f244048df5383447056c356de267a49.png

数据符号和导频符号按照导频插入的规则分别映射到资源网格上,其函数为

e5c17ff0dbf91f811f15eeab38d8b41c.png

其中idx_data表示数据符号在资源网格处的索引,idx_csr表示导频符号在资源网格处的索引。将数据符号和导频符号都映射到资源网格上后,接下来对完成映射的资源网格进行OFDM调制,由于OFDM调制的数学原理与傅里叶逆(IFFT)变换等效,因此可以直接对资源网格进行IFFT完成OFDM调制操作。信号经OFDM调制后,添加循环前缀(CP),然后通过并串转换得到发射的时域信号。加入CP的目的是消除符号间干扰(ISI),由于多径的影响,将破坏子载波间的正交性,引入ISI。其函数为

d3ebead54860efc25072068ebfec4d46.png

此时我们已经得到时域的发射信号,接下来是通过衰落信道和AWGN信道,衰落信道我们这里使用的是MATLAB自带的库函数comm.MIMOChannel,而这个函数很难用Python实现,因此我们直接在Python中通过MATLAB API调用该函数,其调用形式为

cfdfa94cfd1a83fd47bfd98001125453.png

其中engine为Python中MATLAB的引擎接口。AWGN信道比较容易实现,其函数为

fb9f57f33a0fb518528c5399f48dbc1e.png

将发射的时域信号通过这两种信道就得到接收的时域信号,当接收机接收到衰落的信号后,首先去除信号中的CP,然后对去除CP后的信号进行OFDM解调,即对信号进行(FFT)操作将时域信号转换为频域信号,其函数为

08d48911b8d84db1046b55c8b3ebea65.png

接着对OFDM解调后的信号进行资源元素反映射,得到接收的符号流,其函数为

334d7b50ab6bd0747e479f8f47e72438.png

最后通过信道估计、信道均衡和解调将信号还原为比特流。这部分后面详细介绍。我们将所有函数编写成主函数为

1.  import sys  

2.  sys.path.append('../')  

3.    

4.  import numpy as np  

5.  import matlab  

6.  import time  

7.  import scipy.io as sio  

8.  import matlab.engine 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/791384
推荐阅读
相关标签
  

闽ICP备14008679号