黃秀麗,周月娥
(南京理工大學(xué)紫金學(xué)院,江蘇 南京 210023)
隨著信息技術(shù)的發(fā)展,虛擬仿真在實(shí)際應(yīng)用中越來(lái)越廣泛。虛擬仿真實(shí)驗(yàn)教學(xué)是信息技術(shù)在教育領(lǐng)域的重要應(yīng)用,是教育信息化的重要組成部分。特別是應(yīng)對(duì)疫情對(duì)教學(xué)產(chǎn)生的影響時(shí),在線教學(xué)成為主要的教學(xué)形式。但是,傳統(tǒng)依賴實(shí)驗(yàn)設(shè)備的實(shí)驗(yàn)教學(xué)形式?jīng)]有辦法搬移到互聯(lián)網(wǎng)上進(jìn)行。實(shí)驗(yàn)教學(xué)部分就要充分考慮虛擬仿真實(shí)驗(yàn)項(xiàng)目和相關(guān)實(shí)驗(yàn)教學(xué)資源,積極開展在線實(shí)驗(yàn)教學(xué)的探索與實(shí)踐,保障實(shí)驗(yàn)課程的內(nèi)容和質(zhì)量。
通信原理作為電子信息類專業(yè)課程,也面臨著開展虛擬仿真實(shí)驗(yàn)教學(xué)的要求。針對(duì)硬件實(shí)驗(yàn)設(shè)備不易搬移的不足,有借助Matlab/Simulink 虛擬仿真實(shí)驗(yàn)環(huán)境對(duì)傳統(tǒng)實(shí)驗(yàn)方法進(jìn)行補(bǔ)充和改革的方案,也有基于SystemView 構(gòu)建的實(shí)驗(yàn)教學(xué)體系。但是,這些虛擬仿真平臺(tái)上的仿真結(jié)果不能直接應(yīng)用到實(shí)際工程應(yīng)用中,仿真實(shí)驗(yàn)形成的代碼不具備通用性,離開了仿真平臺(tái)就無(wú)法運(yùn)行。尋找一種簡(jiǎn)潔方便,與實(shí)際工程應(yīng)用緊密結(jié)合的仿真平臺(tái)成為通信原理虛擬仿真的當(dāng)務(wù)之急。Python作為近年來(lái)發(fā)展迅速的人工智能語(yǔ)言,與通信原理的結(jié)合越來(lái)越緊密,同時(shí)也為通信原理虛擬仿真提供了一種新的途徑。
虛擬仿真的實(shí)施過(guò)程中,需要結(jié)合理論知識(shí)來(lái)進(jìn)行。結(jié)合線上、線下的教學(xué)平臺(tái),將多種信息技術(shù)手段融為一體,讓學(xué)習(xí)者在工程應(yīng)用、原理知識(shí)、實(shí)踐仿真、技術(shù)前沿各方面感知通信原理。讓學(xué)習(xí)者全方位理解通信原理知識(shí)點(diǎn)并掌握通信原理實(shí)際工程應(yīng)用能力。通過(guò)多種維度從理論剖析、仿真實(shí)驗(yàn)、實(shí)際應(yīng)用、研究性學(xué)習(xí)等方面對(duì)通信原理進(jìn)行研究。
Python 做為近年來(lái)人工智能比較流行的語(yǔ)言,能夠以更簡(jiǎn)潔的語(yǔ)法,更強(qiáng)大的第三方庫(kù)強(qiáng)有力地支撐復(fù)雜數(shù)據(jù)分析和智能處理。隨著通信技術(shù)的發(fā)展,Python 與通信系統(tǒng)相結(jié)合成為新的研究方向。結(jié)合通信技術(shù)的發(fā)展方向以及實(shí)際工程應(yīng)用的需要,將Python 與通信原理虛擬仿真相結(jié)合,不僅可以提升學(xué)習(xí)者對(duì)實(shí)驗(yàn)原理的理解,更能將虛擬仿真的結(jié)果直接對(duì)接到實(shí)際工程項(xiàng)目,真正做到學(xué)以致用。Python 的可視化開發(fā)工具有很多,目前應(yīng)用較為廣泛的是PyCharm。在電腦上安裝了Python 的開發(fā)環(huán)境和開發(fā)工具PyCharm 后就可以進(jìn)行通信原理的虛擬仿真。
5G 技術(shù)的發(fā)展,其中關(guān)鍵技術(shù)之一就是信號(hào)調(diào)制。目前,應(yīng)用最廣泛的調(diào)制技術(shù)是QAM 調(diào)制。接下來(lái)將以典型的16QAM 調(diào)制為例介紹Python 在通信原理虛擬仿真中的應(yīng)用情況。
M 進(jìn)制調(diào)制中,共有M 種1 和0 的比特組合,分別對(duì)應(yīng)M 種碼元波形,每個(gè)碼元波形可傳輸log2M個(gè)比特的信息。QAM 調(diào)制中不同低頻基帶信號(hào)的比特組合對(duì)應(yīng)不同高頻帶通信號(hào)的碼元波形。QAM 碼元波形通過(guò)幅度或者相位上的不同對(duì)應(yīng)不同的比特組合。
QAM 調(diào)制是結(jié)合了幅度調(diào)制和相位調(diào)制的一種調(diào)制方式。通過(guò)將QAM 調(diào)制的公式展開可以發(fā)現(xiàn)QAM 可以表示成I 路和Q 路兩路正交載波的幅度鍵控之和。QAM 調(diào)制的虛擬仿真就是針對(duì)指定的二進(jìn)制比特流信號(hào)給出對(duì)應(yīng)的QAM 調(diào)制后的碼元波形。
以16QAM 為例,1個(gè)碼元對(duì)應(yīng)4 比特b0b1b2b3。那么就對(duì)應(yīng)前2個(gè)比特b0b1,QK 對(duì)應(yīng)后2個(gè)比特b2b3。于是將IK 的4個(gè)幅度+3A、+A、-A、-3A 與比特b0b1 的4個(gè)組合11、10、01、00 相對(duì)應(yīng)。QK 的4個(gè)幅度+3A、+A、-A、-3A 與比特b2b3 的4個(gè)組合11、10、01、00 相對(duì)應(yīng)。16QAM 中的16 種比特組合分別對(duì)應(yīng)了IK 和QK 的16 種不同排列組合。IK 和QK 的值不同也對(duì)應(yīng)了不同的AK 和θK。比特組合b0b1b2b3 與IK、QK 以及AK、θK之間的對(duì)應(yīng)關(guān)系可以用星座圖表示。16QAM 星座圖虛擬仿真的Python 代碼如下:
d i g r a m = {‘1 1’:3,’1 0’:1,’0 1’:-1,’00’:-3}#設(shè)置數(shù)字和幅度的對(duì)應(yīng)關(guān)系
spots = {}#放置點(diǎn)
plt.axis([-5,5,-5,5])#設(shè)置坐標(biāo)的數(shù)字范圍
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])#通過(guò)循環(huán)獲得16個(gè)比特組合b0b1b2b3
str1 = ‘’.join([i,j])#前2個(gè)比特組合b0b1
a = digram[str1]#獲b0b1 對(duì)應(yīng)的值
str2 = ‘’.join([k,p])
b = digram[str2]#獲取b2b3 對(duì)應(yīng)的QK 值
complexSpot = complex(a,b)#將IK、QK 保存為一個(gè)復(fù)數(shù)的實(shí)部和虛部
plt.scatter(a,b,c=’black’)# 將IK、QK 做為橫坐標(biāo)、縱坐標(biāo)繪制星座點(diǎn)
plt.text(a,b+0.3,str,horizontalalignment=’center’)#繪制比特組合
tempspot = {str:complexSpot}#獲得數(shù)字組合和點(diǎn)的對(duì)應(yīng)
spots.update(tempspot)# 比特組合與點(diǎn)的對(duì)應(yīng)關(guān)系存入字典集合
隨著信息技術(shù)的發(fā)展,我國(guó)傳統(tǒng)農(nóng)業(yè)正在向現(xiàn)代化的智慧農(nóng)業(yè)轉(zhuǎn)化。智慧農(nóng)業(yè)是指依托農(nóng)業(yè)大數(shù)據(jù),集物聯(lián)網(wǎng)、傳感器、云計(jì)算等多種新興技術(shù)為一體,實(shí)現(xiàn)農(nóng)業(yè)生產(chǎn)中的智能感知、監(jiān)測(cè)、預(yù)警、分析等,并提供精準(zhǔn)決策。田間害蟲圖像作為農(nóng)業(yè)大數(shù)據(jù)的重要組成部分,準(zhǔn)確對(duì)其進(jìn)行識(shí)別,并以此為依據(jù)進(jìn)行害蟲防治,是實(shí)現(xiàn)智慧農(nóng)業(yè)的重要環(huán)節(jié)。
plt.show()
運(yùn)行Python 代碼后就可以得到16QAM 的星座圖。如圖1 所示??梢园l(fā)現(xiàn)16QAM 信號(hào)有3個(gè)不同的幅度,12個(gè)不同的相位。相鄰比特需符合格雷碼編碼方式。
圖1 結(jié)合Python 的16QAM 星座圖虛擬仿真
通過(guò)星座圖可以得到比特組合對(duì)應(yīng)的IK 和QK 值。每個(gè)比特組合對(duì)應(yīng)一個(gè)復(fù)數(shù),復(fù)數(shù)的實(shí)部對(duì)應(yīng)IK 的值,復(fù)數(shù)的虛部對(duì)應(yīng)QK 的值。比特組合和復(fù)數(shù)的對(duì)應(yīng)關(guān)系保存在字典對(duì)象spots 中。根據(jù)spots 中比特組合與復(fù)數(shù)的對(duì)應(yīng)關(guān)系就可以進(jìn)行16QAM 調(diào)制波形的仿真。具體實(shí)現(xiàn)代碼如下:
# 基帶信號(hào)
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個(gè)比特每隔0.5 繪制到坐標(biāo)系上
plt.xlim(0, 12)
# 串并變換
l4 = int(len(y1) / 4) # 獲取比特流的長(zhǎng)度除以4,4個(gè)比特為一組
a = np.asarray(y1) # 將基帶信號(hào)轉(zhuǎn)換為numpy 格式
y2 = a.reshape(l4, 4) # 將一維數(shù)組轉(zhuǎn)置為二維數(shù)組,每一行有4個(gè)比特
plt.subplot(2, 1, 2)
t = np.arange(0, 12., 0.01) # 橫坐標(biāo)的數(shù)據(jù)列表,每隔0.01 繪制一個(gè)點(diǎn)
rectwav = [] # 用來(lái)存儲(chǔ)縱坐標(biāo)值的列表
# i 表示第i個(gè)碼元,繪制碼元波形
for i in range(l4):
b = y2[i] # 取出第i 組比特組合b0b1b2b3
str4Bits = str(b).strip(‘[‘).strip(‘]’).replace(‘ ‘,‘’) # 轉(zhuǎn)換為字符串并且去掉[ ] 和空格
complexWave = spots[str4Bits] #得到IK 和QK 的值
xWave = complexWave.real # 取出實(shí)部IK 的值
yWave = complexWave.imag # 取出虛部QK 的值
t_tmp = t[(i * 200):((i + 1) * 200)] #每段波形長(zhǎng)度應(yīng)該是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個(gè)正交載波相乘求和
rectwav.append(wav_tmp) # 將調(diào)制后的點(diǎn)加到總的波形列表中
plt.plot(t, np.array(rectwav).flatten())
plt.xlim(0, 12)
plt.ylim(-5, 5)
plt.tight_layout()
plt.show()
在16QAM 調(diào)制波形仿真中,首先將基帶信號(hào)的比特流進(jìn)行串并變換,放在1個(gè)二維數(shù)組中,二維數(shù)組的每行對(duì)應(yīng)1個(gè)比特組合b0b1b2b3。在for 循環(huán)中對(duì)每行比特組合進(jìn)行遍歷,通過(guò)spots 字典查詢比特組合對(duì)應(yīng)的IK、QK 值,將IK、QK 分別與2個(gè)正交載波相乘求和。運(yùn)行程序就得到了16QAM 的波形圖,如圖2 所示。
圖2 結(jié)合Python 的16QAM 波形調(diào)制虛擬仿真
通過(guò)虛擬仿真的結(jié)果可以看到Python 十分適合應(yīng)用在通信原理虛擬仿真中。Python 代碼簡(jiǎn)潔易懂,仿真結(jié)果清晰直觀,同時(shí)可以直接應(yīng)用于實(shí)際工程項(xiàng)目中,與實(shí)際通信系統(tǒng)無(wú)縫連接。
結(jié)合Python 的通信原理虛擬仿真不僅為在線實(shí)驗(yàn)教學(xué)提供了更多的可能,也促進(jìn)了人工智能技術(shù)在通信原理中的應(yīng)用,符合通信技術(shù)發(fā)展的方向。Python 作為人工智能的主要語(yǔ)言,為通信原理虛擬仿真提供了更加便捷開放的平臺(tái),促進(jìn)了通信原理虛擬仿真與實(shí)際工程應(yīng)用的結(jié)合。通過(guò)Python 進(jìn)行通信原理的虛擬仿真需要同時(shí)掌握通信原理理論知識(shí)和Python 編程規(guī)則,廣泛深入地實(shí)施結(jié)合Python 的通信原理虛擬仿真還需要進(jìn)一步發(fā)展。