高志斌,林和志,馮超
(廈門大學(xué)信息科學(xué)與技術(shù)學(xué)院,廈門361005)
信息與通信工程一級學(xué)科下設(shè)通信與信息系統(tǒng)、信號與信息處理、電子與通信工程等碩士點(diǎn),通信工程、電子信息工程、信息安全等本科二級專業(yè)。該學(xué)科涉及電磁場、信號處理、無線通信等高技術(shù)領(lǐng)域,要求學(xué)生掌握信息傳輸、信息采集和信息處理等基礎(chǔ)知識,具備信號檢測與估計、信號分析與處理、系統(tǒng)分析與設(shè)計等方面的專業(yè)知識和技能[1]。其中,信息處理類課程在學(xué)生培養(yǎng)中起到至關(guān)重要的作用。
大部分高校的信息與通信工程學(xué)科的信息處理類課程,包括《信號與系統(tǒng)》、《數(shù)字信號處理》、《隨機(jī)信號分析》、《數(shù)字圖像處理》和《多媒體技術(shù)》等本科課程,《現(xiàn)代信號處理》、《語音信號處理》、《機(jī)器視覺》等研究生階段的課程,向外延伸至《信息論與編碼》、《通信原理》、《DSP原理與應(yīng)用》、《無線通信工程》、《嵌入式系統(tǒng)設(shè)計》或《嵌入式項(xiàng)目開發(fā)》等相關(guān)課程[2-3]。
早期引入實(shí)驗(yàn)對信號處理類課程起到極大的推動作用,從這類課程的繁重的數(shù)學(xué)公式推導(dǎo)和枯燥的理論概念理解,到具有直觀信號呈現(xiàn)的實(shí)驗(yàn)箱操作,到可以進(jìn)行相關(guān)理論輔助推導(dǎo)、仿真、設(shè)計、驗(yàn)證的MAT?LAB軟件編程,起到很好的教學(xué)質(zhì)量提升。但隨著新工科建設(shè)的推進(jìn),隨著人才培養(yǎng)要求的提升,硬件方面從跳線實(shí)驗(yàn)箱到FPGA、DSP芯片應(yīng)用設(shè)計,到嵌入式系統(tǒng)設(shè)計的發(fā)展,給出了在硬件實(shí)驗(yàn)教育方面的清晰路線;而軟件實(shí)驗(yàn)方面,驗(yàn)證式和簡單模仿式的,把教師給的例子做參數(shù)調(diào)整的教學(xué)模式,不再適用于新工科背景下的教學(xué)任務(wù),單純地調(diào)整課程內(nèi)容對教學(xué)效果依舊很差。這種教學(xué)模式迫切需要改革。
本文認(rèn)為引入Python可以在信號處理類,克服單純軟件仿真難以結(jié)合開放式嵌入式系統(tǒng)等硬件開發(fā),達(dá)到芯片應(yīng)用與算法設(shè)計實(shí)踐方面的進(jìn)一步結(jié)合和發(fā)展。
信息反映了一個物理系統(tǒng)的狀態(tài)或特性,是以各種物理量的性質(zhì)、數(shù)量及其相互函數(shù)關(guān)系或信號來表達(dá)的。信號是傳載信息的物理量,是信息的表現(xiàn)形式。信號處理就是運(yùn)用數(shù)學(xué)或物理的方法對信號進(jìn)行各種加工或變換,其目的是濾除混雜在信號中的噪聲和干擾,將信號變換成易于識別的形式,便于提取它的特征參數(shù)。信號處理的本質(zhì)是信息的變換和提取。目前信號處理已經(jīng)成為了現(xiàn)代科學(xué)技術(shù)的支柱之一,已廣泛應(yīng)用于人類生產(chǎn)和生活的各個方面[4]。
針對信號處理類課程,起點(diǎn)較高、公式繁多、推導(dǎo)復(fù)雜、概念抽象、難度較大,導(dǎo)致學(xué)生興趣不高的問題,早期的教學(xué)方式改革主要圍繞教學(xué)內(nèi)容的調(diào)整,如強(qiáng)化物理意義,優(yōu)化數(shù)學(xué)推導(dǎo),增加課外材料,調(diào)動學(xué)生積極性。隨著信息化技術(shù)的引入,采取多媒體與板書結(jié)合,將信號處理實(shí)驗(yàn)箱和MATLAB、LabVIEW等軟件引入課堂教學(xué),充分調(diào)動學(xué)生聽覺、視覺、觸覺等多種感官共同參與[5],二十多年來在中國高校對激發(fā)學(xué)生興趣、提高學(xué)習(xí)效率加強(qiáng)課程理解起到很積極的作用。
當(dāng)前信號處理類課程的設(shè)計均包含理論和實(shí)驗(yàn)部分,國際國內(nèi)大部分高校都考慮理論和實(shí)驗(yàn)實(shí)踐的充分結(jié)合。但現(xiàn)有的實(shí)驗(yàn)設(shè)計上,還存在如下問題:
(1)重視理論,輕視實(shí)驗(yàn)。理論課程的課時重,內(nèi)容繁多,實(shí)驗(yàn)課時少,只是對理論理解的輔助。
(2)實(shí)驗(yàn)環(huán)節(jié)簡單,驗(yàn)證型項(xiàng)目居多。目前信號處理類課程,如信號與系統(tǒng)、數(shù)字信號處理,在實(shí)驗(yàn)方面,一般采取實(shí)驗(yàn)箱跳線驗(yàn)證,或者M(jìn)ATLAB作為軟件仿真工具,做簡單驗(yàn)證和模仿實(shí)例。
(3)實(shí)驗(yàn)環(huán)節(jié)停留在對理論課程的理解而缺乏應(yīng)用實(shí)踐類的項(xiàng)目設(shè)計。如基于MATLAB做信號與系統(tǒng)分析或者濾波器設(shè)計,而具體的濾波器應(yīng)用卻要在其他帶有硬件處理器的課程完成,造成實(shí)踐類項(xiàng)目設(shè)計與課程稍有脫節(jié)。
2006年卡內(nèi)基·梅隆大學(xué)Jeannette M.Wing教授提出并闡釋了“計算思維”概念,信息類學(xué)生在信號處理類課程的教學(xué)中培養(yǎng)計算思維能力也應(yīng)該是很重要的內(nèi)容。高度概括和理論總結(jié)的信號處理理論,在傳授學(xué)科知識上應(yīng)該注重應(yīng)用能力的訓(xùn)練。MATLAB類的軟件在分析設(shè)計方面能起到很好的作用,在應(yīng)用方面還未提供友好的接口。
Python語言于1991年發(fā)布第一個版本,現(xiàn)已發(fā)展到3.x。它是一種解釋型、面向?qū)ο?、動態(tài)的高級程序設(shè)計語言,具有簡潔、易讀以及可擴(kuò)展性強(qiáng)的特點(diǎn),且因?yàn)樵絹碓蕉嗟目蒲泄ぷ髡哌x擇Python作為開發(fā)語言,貢獻(xiàn)了眾多的開源科學(xué)計算軟件包,或者提供Py?thon語言的調(diào)用接口,如用于科學(xué)計算的NumPy、SciPy、Sympy和Matplotlib等功能強(qiáng)大的函數(shù)包,提供了快速數(shù)組處理、數(shù)值運(yùn)算和繪圖的功能。Python語言及其眾多的擴(kuò)展庫構(gòu)成的開發(fā)環(huán)境非常適合工程技術(shù)和科研人員處理實(shí)驗(yàn)數(shù)據(jù),開發(fā)應(yīng)用程序[4]。
近年來,隨著人工智能的發(fā)展,Python這種膠水語言引起大家的重視,應(yīng)用Python進(jìn)行信號處理類編程實(shí)踐,并結(jié)合FPGA和嵌入式系統(tǒng)開發(fā)的技術(shù),大大優(yōu)化了軟硬件協(xié)同綜合設(shè)計的效率。而隨著“新工科”建設(shè)理念,在國內(nèi)高校里引起的廣泛重視,結(jié)合信息處理技術(shù),改造老學(xué)科,推動新興的學(xué)科門類發(fā)展、不同學(xué)科交叉的新生學(xué)科迫切需要我們考慮培養(yǎng)具備電子技術(shù)及信息系統(tǒng)的基礎(chǔ)知識,從事各類電子設(shè)備和信息系統(tǒng)研究、設(shè)計、制造、應(yīng)用和開發(fā)的工程技術(shù)人才[2]。
在信號處理類配套實(shí)驗(yàn)課程中,完全可以逐步加入Python的仿真編程。這里給出一個經(jīng)典的濾波器設(shè)計和實(shí)現(xiàn)場景。設(shè)有一個信號,包含5Hz和50Hz兩個正弦波的疊加,以500Hz采樣率對該信號進(jìn)行采樣,記錄時長為1s,設(shè)計兩個3階巴特沃斯濾波器,分別采用低通濾波器獲得低頻部分,高通濾波器獲得高頻部分。
我們將Python 2.7編程設(shè)計和實(shí)驗(yàn)結(jié)果與基于MATLAB 2015b的編程進(jìn)行比較。
MATLAB是MathWorks公司的商用軟件,有一個統(tǒng)一的集成開發(fā)環(huán)境(IDE),包含編輯器、命令窗口等,很方便運(yùn)行和調(diào)試。這里采用butter函數(shù)和filter函數(shù)進(jìn)行濾波器設(shè)計和處理,用figure和plot進(jìn)行圖形的繪制。
Python的IDE則有很多選擇,筆者認(rèn)為JetBrains公司的PyCharm界面友好,對教育界提供免費(fèi)的專業(yè)試用版本,也具備運(yùn)行和調(diào)試功能。在其中采用scipy包中的signal.butter()和signal.filtfilt()函數(shù)進(jìn)行數(shù)據(jù)處理,采用Matpoltlib進(jìn)行圖形的繪制。如圖1所示,可以看出在編程和可視化呈現(xiàn)方面,Python與MATLAB差別不大。
MATLAB的在線幫助(help)功能強(qiáng)大且方便查閱。而PyCharm點(diǎn)擊菜單quick documentation,同樣可以調(diào)出help窗口,給出詳細(xì)的幫助說明,如圖2所示。
Python能查看filtfilt函數(shù)的定義,也就是對源代碼的查閱和分析。但MATLAB的filter作為內(nèi)建函數(shù)(Built-in function),是看不到源代碼的。對學(xué)生而言,MATLAB隱藏了部分內(nèi)建函數(shù)的源代碼,Python卻具備開源代碼的容易學(xué)習(xí)的好處。因此對教學(xué)而言,Py?thon在理解算法和教學(xué)上具有較強(qiáng)的優(yōu)勢。
圖1 濾波器實(shí)現(xiàn)效果的可視化對比
圖2 幫助文檔界面的對比
此外,Python可以在Linux嵌入式系統(tǒng)上運(yùn)行,如FPGA板卡Digilent PYNQ-Z1,設(shè)計用于與來自Xilinx的PYNQ項(xiàng)目合作,支持Python語言及庫,可以直接使用Python創(chuàng)建高性能的嵌入式應(yīng)用程序,甚至可以支持并行硬件執(zhí)行、高速視頻處理、實(shí)時信號處理。劍橋大學(xué)數(shù)學(xué)科學(xué)中心的Damien P.George將Python移植到ARM Cortex M微處理器上,實(shí)現(xiàn)了一個運(yùn)行在微控制器上的MicroPython。所以Python可以無縫地從實(shí)驗(yàn)室的信號處理驗(yàn)證型實(shí)驗(yàn)走向信號處理在數(shù)據(jù)采集和回放設(shè)備配合下的物聯(lián)網(wǎng)、無線通信實(shí)驗(yàn),且硬件成本極低。而MATLAB作為重量級的軟件,Linux上雖然可以安裝,但一般不支持輕量級的嵌入式設(shè)備,Scilab工具也存在類似問題,而LabVIEW具備較大的硬件封閉性,對嵌入式系統(tǒng)支持少。所以,Python在軟硬件融合設(shè)計開發(fā)方面的優(yōu)勢也顯而易見。
Python作為一門新興的編程語言,在科學(xué)計算、教學(xué)和信號處理的軟硬件實(shí)現(xiàn)上具有較強(qiáng)的優(yōu)勢。信號處理類課程為增強(qiáng)對理論的理解,采用MATLAB、Lab?VIEW等軟件配合硬件實(shí)驗(yàn)箱的實(shí)驗(yàn)教學(xué)方式。在新工科建設(shè)的背景下,可以進(jìn)一步考慮引入Python編程語言,并配合適當(dāng)?shù)挠布O(shè)備,將實(shí)驗(yàn)內(nèi)容結(jié)合實(shí)驗(yàn)項(xiàng)目優(yōu)化現(xiàn)有的信號處理類課程,增強(qiáng)面向新工科的學(xué)科建設(shè),提升學(xué)生的應(yīng)用設(shè)計能力。