结合PYTHON 的通信原理虚拟仿真研究与实践

2022-08-19 16:10黄秀丽周月娥
中国设备工程 2022年15期
关键词:码元复数波形

黄秀丽,周月娥

(南京理工大学紫金学院,江苏 南京 210023)

随着信息技术的发展,虚拟仿真在实际应用中越来越广泛。虚拟仿真实验教学是信息技术在教育领域的重要应用,是教育信息化的重要组成部分。特别是应对疫情对教学产生的影响时,在线教学成为主要的教学形式。但是,传统依赖实验设备的实验教学形式没有办法搬移到互联网上进行。实验教学部分就要充分考虑虚拟仿真实验项目和相关实验教学资源,积极开展在线实验教学的探索与实践,保障实验课程的内容和质量。

通信原理作为电子信息类专业课程,也面临着开展虚拟仿真实验教学的要求。针对硬件实验设备不易搬移的不足,有借助Matlab/Simulink 虚拟仿真实验环境对传统实验方法进行补充和改革的方案,也有基于SystemView 构建的实验教学体系。但是,这些虚拟仿真平台上的仿真结果不能直接应用到实际工程应用中,仿真实验形成的代码不具备通用性,离开了仿真平台就无法运行。寻找一种简洁方便,与实际工程应用紧密结合的仿真平台成为通信原理虚拟仿真的当务之急。Python作为近年来发展迅速的人工智能语言,与通信原理的结合越来越紧密,同时也为通信原理虚拟仿真提供了一种新的途径。

1 结合Python 的通信原理虚拟仿真

虚拟仿真的实施过程中,需要结合理论知识来进行。结合线上、线下的教学平台,将多种信息技术手段融为一体,让学习者在工程应用、原理知识、实践仿真、技术前沿各方面感知通信原理。让学习者全方位理解通信原理知识点并掌握通信原理实际工程应用能力。通过多种维度从理论剖析、仿真实验、实际应用、研究性学习等方面对通信原理进行研究。

Python 做为近年来人工智能比较流行的语言,能够以更简洁的语法,更强大的第三方库强有力地支撑复杂数据分析和智能处理。随着通信技术的发展,Python 与通信系统相结合成为新的研究方向。结合通信技术的发展方向以及实际工程应用的需要,将Python 与通信原理虚拟仿真相结合,不仅可以提升学习者对实验原理的理解,更能将虚拟仿真的结果直接对接到实际工程项目,真正做到学以致用。Python 的可视化开发工具有很多,目前应用较为广泛的是PyCharm。在电脑上安装了Python 的开发环境和开发工具PyCharm 后就可以进行通信原理的虚拟仿真。

2 结合Python 的通信原理虚拟仿真应用实例

5G 技术的发展,其中关键技术之一就是信号调制。目前,应用最广泛的调制技术是QAM 调制。接下来将以典型的16QAM 调制为例介绍Python 在通信原理虚拟仿真中的应用情况。

2.1 QAM 调制的原理

M 进制调制中,共有M 种1 和0 的比特组合,分别对应M 种码元波形,每个码元波形可传输log2M个比特的信息。QAM 调制中不同低频基带信号的比特组合对应不同高频带通信号的码元波形。QAM 码元波形通过幅度或者相位上的不同对应不同的比特组合。

QAM 调制是结合了幅度调制和相位调制的一种调制方式。通过将QAM 调制的公式展开可以发现QAM 可以表示成I 路和Q 路两路正交载波的幅度键控之和。QAM 调制的虚拟仿真就是针对指定的二进制比特流信号给出对应的QAM 调制后的码元波形。

2.2 16QAM 虚拟仿真

以16QAM 为例,1个码元对应4 比特b0b1b2b3。那么就对应前2个比特b0b1,QK 对应后2个比特b2b3。于是将IK 的4个幅度+3A、+A、-A、-3A 与比特b0b1 的4个组合11、10、01、00 相对应。QK 的4个幅度+3A、+A、-A、-3A 与比特b2b3 的4个组合11、10、01、00 相对应。16QAM 中的16 种比特组合分别对应了IK 和QK 的16 种不同排列组合。IK 和QK 的值不同也对应了不同的AK 和θK。比特组合b0b1b2b3 与IK、QK 以及AK、θK之间的对应关系可以用星座图表示。16QAM 星座图虚拟仿真的Python 代码如下:

d i g r a m = {‘1 1’:3,’1 0’:1,’0 1’:-1,’00’:-3}#设置数字和幅度的对应关系

spots = {}#放置点

plt.axis([-5,5,-5,5])#设置坐标的数字范围

for i in [‘0’,’1’]:

for j in [‘0’,’1’]:

for k in [‘0’,’1’]:

for p in [‘0’,’1’]:

str = ‘’.join([i,j,k,p])#通过循环获得16个比特组合b0b1b2b3

str1 = ‘’.join([i,j])#前2个比特组合b0b1

a = digram[str1]#获b0b1 对应的值

str2 = ‘’.join([k,p])

b = digram[str2]#获取b2b3 对应的QK 值

complexSpot = complex(a,b)#将IK、QK 保存为一个复数的实部和虚部

plt.scatter(a,b,c=’black’)# 将IK、QK 做为横坐标、纵坐标绘制星座点

plt.text(a,b+0.3,str,horizontalalignment=’center’)#绘制比特组合

tempspot = {str:complexSpot}#获得数字组合和点的对应

spots.update(tempspot)# 比特组合与点的对应关系存入字典集合

随着信息技术的发展,我国传统农业正在向现代化的智慧农业转化。智慧农业是指依托农业大数据,集物联网、传感器、云计算等多种新兴技术为一体,实现农业生产中的智能感知、监测、预警、分析等,并提供精准决策。田间害虫图像作为农业大数据的重要组成部分,准确对其进行识别,并以此为依据进行害虫防治,是实现智慧农业的重要环节。

plt.show()

运行Python 代码后就可以得到16QAM 的星座图。如图1 所示。可以发现16QAM 信号有3个不同的幅度,12个不同的相位。相邻比特需符合格雷码编码方式。

图1 结合Python 的16QAM 星座图虚拟仿真

通过星座图可以得到比特组合对应的IK 和QK 值。每个比特组合对应一个复数,复数的实部对应IK 的值,复数的虚部对应QK 的值。比特组合和复数的对应关系保存在字典对象spots 中。根据spots 中比特组合与复数的对应关系就可以进行16QAM 调制波形的仿真。具体实现代码如下:

# 基带信号

plt.subplot(2, 1, 1)

y1 = [0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1,1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1]

plt.plot(t, y1, drawstyle=’steps-post’) #将16个比特每隔0.5 绘制到坐标系上

plt.xlim(0, 12)

# 串并变换

l4 = int(len(y1) / 4) # 获取比特流的长度除以4,4个比特为一组

a = np.asarray(y1) # 将基带信号转换为numpy 格式

y2 = a.reshape(l4, 4) # 将一维数组转置为二维数组,每一行有4个比特

plt.subplot(2, 1, 2)

t = np.arange(0, 12., 0.01) # 横坐标的数据列表,每隔0.01 绘制一个点

rectwav = [] # 用来存储纵坐标值的列表

# i 表示第i个码元,绘制码元波形

for i in range(l4):

b = y2[i] # 取出第i 组比特组合b0b1b2b3

str4Bits = str(b).strip(‘[‘).strip(‘]’).replace(‘ ‘,‘’) # 转换为字符串并且去掉[ ] 和空格

complexWave = spots[str4Bits] #得到IK 和QK 的值

xWave = complexWave.real # 取出实部IK 的值

yWave = complexWave.imag # 取出虚部QK 的值

t_tmp = t[(i * 200):((i + 1) * 200)] #每段波形长度应该是0.5 的4 倍,也就是2

xI_tmp = xWave * np.ones(200) #IK

yQ_tmp = yWave * np.ones(200) # QK

wav_tmp = xI_tmp * np.cos(2 * np.pi * 5 * t_tmp) - yQ_tmp * np.sin(2 * np.pi * 5 * t_tmp) #IK 和QK 分别与2个正交载波相乘求和

rectwav.append(wav_tmp) # 将调制后的点加到总的波形列表中

plt.plot(t, np.array(rectwav).flatten())

plt.xlim(0, 12)

plt.ylim(-5, 5)

plt.tight_layout()

plt.show()

在16QAM 调制波形仿真中,首先将基带信号的比特流进行串并变换,放在1个二维数组中,二维数组的每行对应1个比特组合b0b1b2b3。在for 循环中对每行比特组合进行遍历,通过spots 字典查询比特组合对应的IK、QK 值,将IK、QK 分别与2个正交载波相乘求和。运行程序就得到了16QAM 的波形图,如图2 所示。

图2 结合Python 的16QAM 波形调制虚拟仿真

通过虚拟仿真的结果可以看到Python 十分适合应用在通信原理虚拟仿真中。Python 代码简洁易懂,仿真结果清晰直观,同时可以直接应用于实际工程项目中,与实际通信系统无缝连接。

3 结语

结合Python 的通信原理虚拟仿真不仅为在线实验教学提供了更多的可能,也促进了人工智能技术在通信原理中的应用,符合通信技术发展的方向。Python 作为人工智能的主要语言,为通信原理虚拟仿真提供了更加便捷开放的平台,促进了通信原理虚拟仿真与实际工程应用的结合。通过Python 进行通信原理的虚拟仿真需要同时掌握通信原理理论知识和Python 编程规则,广泛深入地实施结合Python 的通信原理虚拟仿真还需要进一步发展。

猜你喜欢
码元复数波形
基于时域波形掩护的间歇采样干扰对抗研究
评析复数创新题
求解复数模及最值的多种方法
数系的扩充和复数的引入
基于ZYNQ的IRIG-B(DC)码设计与实现
LFM-BPSK复合调制参数快速估计及码元恢复
基于Halbach阵列磁钢的PMSM气隙磁密波形优化
复数
短码元长度长波ASK信号的一种混沌检测方法*
用于SAR与通信一体化系统的滤波器组多载波波形