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