在時域內(nèi),連續(xù)卷積和離散卷積是求解線性非時變系統(tǒng)零狀態(tài)響應的重要方法,特別是激勵信號為時限信號時尤其如此。卷積的計算比較復雜,是信號與系統(tǒng)分析中的重點和難點,特別適合用計算機來計算。以往的卷積積分多用FORTRAN、C、VB等語言編程,不僅編程繁瑣,而且可視性差。用MATLAB來計算卷積積分問題要比用C、FORTRAN等語言完成相同的事情簡捷得多。
MATLAB是現(xiàn)今國際公認的最優(yōu)秀的科技應用軟件,該軟件有3大特點:具有數(shù)值和符號計算、計算結(jié)果和編程可視化、數(shù)學和文字統(tǒng)一處理、離線和在線計算等強大功能;界面友好,語言自然,指令表達式與標準教科書的數(shù)學表達式相近;開放性強,除了指令行操作的直接交互使用方式外,還帶有各種擴展的工具包,如擴充MATLAB的符號計算功能、圖視建模仿真功能、文字處理功能以及與硬件實時交互功能,它還有專業(yè)性很強的工具包,如信號處理、通信、控制工具包等。MATLAB作為高級應用軟件還有它自己的編程語言,除內(nèi)部函數(shù)外,所有MATLAB主包文件和各工具包文件都是可讀可寫的源文件,用戶可通過對源文件的修改或加入自己編寫的文件去構(gòu)成新的專用工具包。這些特點使它獲得了對應用學科的極強適應力,并很快成為應用學科計算機輔助分析、設計、仿真、教學以及科技文字處理不可或缺的基礎軟件。
MATLAB的出現(xiàn)給信號與系統(tǒng)的分析提供了很大的方便。本文結(jié)合卷積積分給出了如何應用MATLAB工程計算語言,用GUI程序設計來解決連續(xù)卷積和離散卷積的計算和演示問題。
信號卷積的數(shù)值計算
連續(xù)信號卷積積分計算實際上可用信號的分段求和來實現(xiàn),即:
當時間間隔足夠小時,就是的數(shù)值近似。MATLAB的conv(x,h)函數(shù)可以用來計算卷積積分的數(shù)值解。
對于離散信號的卷積,可直接調(diào)用conv(x,h)函數(shù)計算。但繪制離散的卷積波形時,3個離散信號的時間軸定位是問題的關鍵。
卷積的GUI程序設計
所謂GUI程序設計,簡單地說,就是使應用程序具有圖形用戶界面,以方便用戶操作。
在MATLAB中創(chuàng)建圖形用戶界面有2種方法,其一是使用圖形句柄。用這種方法創(chuàng)建圖形界面的過程相當繁瑣,而且在程序編寫好之前,用戶圖形界面是不可見的。所以為了便于創(chuàng)建圖形用戶界面,MATLAB提供了一個開發(fā)環(huán)境,幫助用戶創(chuàng)建圖形用戶界面,這就是GUIDE(Graphic User Interface Development Environment )。
圖形用戶界面(GUI)是由窗口、光標、按鍵、菜單、文字說明等對象(Objects)構(gòu)成的一個用戶界面。用戶通過一定的方法(如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產(chǎn)生某種動作或變化,如實現(xiàn)計算、繪圖等。如果讀者想向別人提供應用程序,想進行某種技術、方法的演示,想制作一個供反復使用且操作簡單的專用工具,那么圖形用戶界面也許是最好的選擇之一。
為對任意2個波形畫出其卷積積分的波形,筆者編寫了卷積的GUI程序設計,一個用于計算連續(xù)信號的卷積,一個用于計算離散信號的卷積。用該程序可以對任意2個有限長或無限長連續(xù)信號和離散信號進行卷積,時間t的范圍可以調(diào)節(jié)。這個程序不僅可以用于課堂演示,也可以用于實際計算。適用性很強。連續(xù)信號的卷積界面及計算結(jié)果如圖1、2所示,離散信號的卷積界面及計算結(jié)果如圖3、4所示。
結(jié)束語
由于MATLAB的強大數(shù)值計算功能,加之MATLAB提供了一個開發(fā)環(huán)境,幫助用戶創(chuàng)建圖形用戶界面,從而使卷積積分的計算和可視化變?yōu)榭赡?。通過以上實例分析可以看到,應用GUI編程技術可以編寫通用性更強的圖形用戶界面,使卷積積分的運算更加容易。經(jīng)過實踐證明,這個教學演示程序在教學中的應用效果十分理想。
(作者單位:湖北省長江大學電子信息學院)