喬 有 田
(揚州職業(yè)大學(xué), 江蘇 揚州 225009)
“信號與系統(tǒng)”是電子信息類專業(yè)的一門專業(yè)基礎(chǔ)課,該課程的特點是概念多且抽象和難以理解,書中涉及的數(shù)學(xué)知識和公式多,系統(tǒng)分析中的時域圖和頻域圖難以繪制,學(xué)習(xí)過程比較枯燥,學(xué)生學(xué)習(xí)的積極性不高。針對“信號與系統(tǒng)”的課程特點和傳統(tǒng)教學(xué)方法的局限性,對“信號與系統(tǒng)”課程與Python語言編程進(jìn)行融合,將書中的理論通過計算機編程以圖形、動畫的形式展示,讓學(xué)生在享受計算機編程樂趣的同時對書中的概念、知識和公式有比較直觀的認(rèn)識。
Python是一種面向?qū)ο蟮慕忉屝?、弱類型腳本語言,它也是一種功能強大而完善的通用型語言。Python具有腳本語言中最豐富和強大的類庫,這些類庫覆蓋了文件 I/O、GUI、網(wǎng)絡(luò)編程、數(shù)據(jù)庫訪問、文本操作等絕大部分應(yīng)用場景。Python借助擴展模塊可以輕松完成從字符串處理到復(fù)雜的3D圖形編程等多種任務(wù)[1-2]。
“信號與系統(tǒng)”這門課程中有些概念比較抽象難懂,例如卷積、周期信號的傅里葉級數(shù)分解、信號頻譜等,在教學(xué)實踐中,將這些知識點用Python語言編寫出相關(guān)的程序,使用圖像、文字、和動態(tài)畫面有機融合的方式,幫助學(xué)生加深對知識點的理解。
所謂創(chuàng)新型實驗,就是鼓勵學(xué)生對書后的一些綜合性的題目,用Python語言來進(jìn)行解答,利用Python語言強大的數(shù)值計算能力和豐富的圖形功能展示計算的過程和結(jié)果,使學(xué)生在享受編程所帶來的成功喜悅的同時,加深對理論的理解。
為了加強對學(xué)生工程思維和工程能力的培養(yǎng),教學(xué)實驗中引入既與理論知識相關(guān)又具有專業(yè)背景的工程實例。如在講解濾波器的時候,通過Python設(shè)計不同類型的濾波器對由兩個頻率的正弦信號構(gòu)成的合成信號進(jìn)行濾波,并觀察濾波效果,讓學(xué)生切實地體會不同的濾波器對信號的影響;同時也可以使學(xué)生明白在以后的工作中應(yīng)如何應(yīng)用“信號與系統(tǒng)”課程的知識點。學(xué)生參與到實踐操作活動中,可以使其動手操作能力和解決實際問題的能力得到有效的訓(xùn)練。
本文對系統(tǒng)的時域響應(yīng)、信號卷積運算、信號傅里葉級數(shù)、信號濾波器、系統(tǒng)函數(shù)應(yīng)用等進(jìn)行仿真設(shè)計[3-5]。
對于線性時不變系統(tǒng),線性連續(xù)時間系統(tǒng)的數(shù)學(xué)模型用常系數(shù)微分方程來描述,線性離散時間系統(tǒng)的數(shù)學(xué)模型用常系數(shù)差分方程來描述。如果系統(tǒng)的輸入信號及初始狀態(tài)已知,通過數(shù)學(xué)方法便可以求出系統(tǒng)的零輸入響應(yīng)、零狀態(tài)響應(yīng)、沖激響應(yīng)和階躍響應(yīng)。由于運用數(shù)學(xué)工具進(jìn)行求解,得出的結(jié)果仍為數(shù)學(xué)表達(dá)式,學(xué)生很難直觀地認(rèn)識系統(tǒng)的激勵和響應(yīng)之間的關(guān)聯(lián)。在本虛擬實驗系統(tǒng)中,可以對激勵和響應(yīng)進(jìn)行仿真,從而實現(xiàn)對其實時性、直觀性和逼真性的認(rèn)識和理解。下面用一個例子說明。
例1:已知描述某連續(xù)系統(tǒng)的方程為:
7y″(t)+4y′(t)+6y(t)=f′(t)+f(t)
試用Python畫出沖激響應(yīng)和階躍響應(yīng)的波形。
Python針對線性時不變系統(tǒng)的沖激響應(yīng)和階躍響應(yīng)提供了scipy.signal.step2(階躍響應(yīng))和scipy.signal.impulse2(沖激響應(yīng))函數(shù)。參考程序如下:
sys=scipy.signal.lti([1, 1], [7, 4, 6]) #構(gòu)造系統(tǒng)
st, sy=scipy.signal.step2(sys)#求系統(tǒng)的階躍響應(yīng)
it, iy=scipy.signal.impulse2(sys)#求系統(tǒng)的沖激響應(yīng)
所得波形如圖1所示。
圖1 沖激響應(yīng)和階躍響應(yīng)波形
卷積計算在“信號與系統(tǒng)”理論中占有重要地位,是“信號與系統(tǒng)”課程中重要且抽象的內(nèi)容,作為一種全新的運算,它包含變量替換、反褶、移位、乘積、積分等步驟,比較復(fù)雜和抽象,為了使學(xué)生更好地理解其求解過程,通過Python編寫程序,設(shè)計兩個矩形波相卷積的動畫,動態(tài)展示卷積的計算過程。
Python中使用scipy.signal.convolve計算卷積,并利用matplotlib.animation.FuncAnimation模塊制作卷積的動畫,本文截取3個時刻的過程圖,如圖2所示。
圖2 信號卷積的波形
圖2從上到下分別顯示了其中一個被卷積函數(shù)波形、另一個被卷積函數(shù)反褶后不斷向右平移的波形、一個函數(shù)與另一個反褶平移后的函數(shù)乘積,最終得到積分的結(jié)果。動態(tài)圖很好地展示了卷積的運算過程。
傅里葉變換是信號處理領(lǐng)域非常重要的一種變換,是整個信號處理課程的核心,由于學(xué)生首次從時域和頻域兩個角度來認(rèn)識信號,認(rèn)知上有難度。用Python軟件設(shè)計的方波合成動畫程序,學(xué)生可以自己調(diào)整,改變參數(shù),得到合成的效果圖,幫助學(xué)生更好地理解周期信號的傅里葉級數(shù)分解。一個周期信號,可以分解成傅里葉級數(shù)的形式,理論上包含無窮多個諧波分量,可以用Python來演示諧波合成的情況。
例2:一個周期為T的方波,其傅里葉級數(shù)可以表示為:
通過編程演示方波分解為正弦波的情況。
實例中用同一個窗口依次展示基波、疊加2次諧波和疊加8次諧波。為了方便對比,將各圖分別畫在不同的窗口中,如圖3所示。圖3很好地展示了方波的合成情況,疊加諧波次數(shù)越多,合成波形越接近方波信號,很好地驗證了周期信號的傅里葉級數(shù)表示。另外從圖3(c)的前8次諧波合成圖可以看出,當(dāng)用周期方波的前8次諧波進(jìn)行疊加時,所得到的合成波形已接近周期方波的輪廓。
圖3 各次諧波合成
濾波器是“信號與系統(tǒng)”課程中的重要概念。濾波器按所通過信號的頻段分為低通、高通、帶通和帶阻四種。濾波器廣泛應(yīng)用于通信、電力、語音處理、電視雷達(dá)等場合,通過Python可以編程實現(xiàn)四種濾波器的濾波功能。
Python設(shè)計濾波器時,使用scipy.signal.filtfilt和scipy.signal.butter兩個函數(shù),得到的效果如圖4、圖5所示。
圖4 低通濾波器濾波效果
圖5 高通濾波器濾波效果
通過兩個頻率分別為400 Hz和800 Hz的正弦波合成圖形,分別用低通和高通兩個濾波器進(jìn)行濾波,分別得到低頻和高頻的正弦波。學(xué)生通過這個實驗非常直觀地看到濾波器的作用效果,同時在這個實驗基礎(chǔ)上,還可進(jìn)行拓展,設(shè)計驗證帶阻和帶通濾波器的程序。
系統(tǒng)函數(shù)是系統(tǒng)的數(shù)學(xué)模型之一,是由系統(tǒng)的本質(zhì)特性確定的,與輸入量無關(guān)。通過系統(tǒng)函數(shù)可以得出系統(tǒng)的重要屬性,如系統(tǒng)功能、穩(wěn)定性、因果性等??赏ㄟ^系統(tǒng)的頻率響應(yīng)曲線大致推斷系統(tǒng)的功能,通過系統(tǒng)的沖激響應(yīng)或零極點推斷系統(tǒng)的穩(wěn)定性等。通過類似的創(chuàng)新型實驗,學(xué)生可以將以前學(xué)過的孤立的知識點連貫成一個有意義的整體,使前后知識貫通。
例3:已知系統(tǒng)函數(shù):
試判定系統(tǒng)是何種類型的濾波器,并判定系統(tǒng)的穩(wěn)定性。
如前所述,系統(tǒng)的功能可以通過系統(tǒng)的頻率響應(yīng)曲線來得到,系統(tǒng)的穩(wěn)定性可以通過系統(tǒng)的沖激響應(yīng)和零極點來斷定。這里用到Python的函數(shù)是control.pzmap、control.impulse-response和control.freqresp,得到的效果如圖6、圖7所示。
圖6 系統(tǒng)的幅頻特征
圖7 系統(tǒng)的零極點分布和沖激響應(yīng)
從圖6(a)可以看出該系統(tǒng)函數(shù)表征的系統(tǒng)是一個低通濾波器。從圖7(a)、(b)可以推斷該系統(tǒng)是一個穩(wěn)定的系統(tǒng)??梢钥闯?該方程不涉及復(fù)雜的數(shù)學(xué)運算,就可以得到期望的結(jié)果,這一方面降低了學(xué)習(xí)的難度,提高了學(xué)生的學(xué)習(xí)積極性;另一方面也使學(xué)生對系統(tǒng)功能的理解和穩(wěn)定性的判斷有一個直觀、清晰的理解。
隨著計算機信息技術(shù)的發(fā)展,虛擬仿真技術(shù)在高職教育中的應(yīng)用變得越來越重要。本文以“信號與系統(tǒng)”課程為例,應(yīng)用Python高級程序設(shè)計語言,對“信號與系統(tǒng)”課程的理論、數(shù)學(xué)公式的推導(dǎo)進(jìn)行精心的設(shè)計和編程,并通過其強大的圖形渲染功能使學(xué)生獲得相關(guān)概念直觀的感性認(rèn)識,增加了學(xué)生的學(xué)習(xí)興趣,實踐證明取得了較好的教學(xué)效果。