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

圖1 濾波器實現(xiàn)效果的可視化對比

圖2 幫助文檔界面的對比
此外,Python可以在Linux嵌入式系統(tǒng)上運行,如FPGA板卡Digilent PYNQ-Z1,設計用于與來自Xilinx的PYNQ項目合作,支持Python語言及庫,可以直接使用Python創(chuàng)建高性能的嵌入式應用程序,甚至可以支持并行硬件執(zhí)行、高速視頻處理、實時信號處理。劍橋大學數(shù)學科學中心的Damien P.George將Python移植到ARM Cortex M微處理器上,實現(xiàn)了一個運行在微控制器上的MicroPython。所以Python可以無縫地從實驗室的信號處理驗證型實驗走向信號處理在數(shù)據(jù)采集和回放設備配合下的物聯(lián)網(wǎng)、無線通信實驗,且硬件成本極低。而MATLAB作為重量級的軟件,Linux上雖然可以安裝,但一般不支持輕量級的嵌入式設備,Scilab工具也存在類似問題,而LabVIEW具備較大的硬件封閉性,對嵌入式系統(tǒng)支持少。所以,Python在軟硬件融合設計開發(fā)方面的優(yōu)勢也顯而易見。
Python作為一門新興的編程語言,在科學計算、教學和信號處理的軟硬件實現(xiàn)上具有較強的優(yōu)勢。信號處理類課程為增強對理論的理解,采用MATLAB、Lab?VIEW等軟件配合硬件實驗箱的實驗教學方式。在新工科建設的背景下,可以進一步考慮引入Python編程語言,并配合適當?shù)挠布O備,將實驗內(nèi)容結合實驗項目優(yōu)化現(xiàn)有的信號處理類課程,增強面向新工科的學科建設,提升學生的應用設計能力。