摘要:本文首先指出了《信號與系統》課程教學中存在的不足,其次給出了MATLAB簡介,最后著重介紹MATLAB在《信號與系統》教學中的應用,并給出了應用實例。
關鍵詞:教學;MATLAB;信號與系統;應用實例
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)16-21325-04
Applications of MATLAB in the Teaching of Signal and System
CHEN Fei
(Department of Electronics Computer of Guilin University of Technology, Guilin 541004, China)
Abstact:In the article , the insufficiencies in the teaching of signal and system is pointed out at first. And the functions and characteristics of MATLAB sofewareisbriefly introduced.At the end of article, theuseofMATLABinsignal and system teaching with some applications instance is described.
Key words:teaching; MATLAB; signal and system; applications instance
1 引言
隨著科學技術的日新月異,社會對大學生的要求越來越高,希望畢業生既要有扎實的理論功底,又要有較強的動手能力。《信號與系統》課程是高等學校電子電氣類各專業的一門重要的技術基礎課程。根據高等工科院校《信號與系統》課程教學的基本要求,加強基礎,突出重點,理論與實踐并重。在實際教學中,我們引入了具有強大計算功能的MATLAB軟件,通過MATLAB編程,促進了學生對課程基本概念、基本原理和基本方法的理解和掌握。
本文首先指出了傳統教學中存在的不足,其次給出了MATLAB簡介,最后著重介紹MATLAB在《信號與系統》教學中的應用,并給出了應用實例。
2 傳統教學中存在的不足
《信號與系統》是一門理論性很強的專業基礎課,涉及到大量的基本概念和基本理論,不僅是先學課程《電路分析》的延續,而且是后續許多電子電氣類專業課(如《數字信號處理》、《通信原理》等)的基礎。然而,在傳統的黑板板書教學方法中(即便有些使用了多媒體教學方式),由于需要大量的數學知識和電路分析知識為基礎,其課堂理論教學過于抽象、枯燥,公式推導繁雜,教學模式死板,造成學生的學習興趣下降,而采用實驗箱展開的實驗教學環節嚴重脫離理論教學,表現為實驗的課目太少、實驗結果誤差大、參數調整范圍小,
根本就無法滿足促進理論教學的要求,最后是學生課后的練習方式單一,僅停留在數學的繁雜計算上,缺乏靈活、動態地對計算結果進行分析,大大地降低了學生對課程基礎理論的深入理解和實際應用能力的培養。
由于傳統教學模式的不足,直接造成了理論教學課時不夠,實踐教學環節薄弱,學生學習負擔加重。
3 MATLAB簡介
自上個世紀八十年代以來,MATLAB由美國MathWorks公司推向市場,廣泛地運用在數學、建筑、商業、信息等學科領域,深受廣大工程技術人員的歡迎,現已成為國際公認的最優秀的科技應用軟件之一。該軟件具有如下特點:(1)功能強大,包括數值分析、符號計算、幾十個高水準的專業工具箱、強大的動態系統仿真建模工具箱Simulink等。(2)界面友好,集數學、文字、圖形和編程結果的可視化數據處理能力于一體。(3)開放性好,跨平臺兼容。(4)易于初學者學習與掌握,具有極高的編程效率。(5)具有廣泛解決各學科專業領域內復雜問題的能力。
4 應用舉例
4.1 信號的表征、分解、變換及其MATLAB實現
在信號與系統中,信號的表征、分解和變換是進行系統分析與設計的基礎。信號的表征是寫出它的數學表達式,此表達式是時間或者頻率的函數,而對信號表達式的一系列運算稱為信號的分解與變換。在實際的理論教學中,學生對公式的數學推導感覺太抽象、繁瑣難懂,理解不夠深入,對系統模型與物理意義之間的對應關系不能有效地統一起來,究其原因是缺乏對課程知識點的感性認識,因此加強信號表征、分解和變換的實踐模擬學習,對于提高課程理論學習效果就顯得及其重要了。
信號按分類方法不同,可分為:確知信號與隨機信號,連續時間信號與離散時間信號,周期信號與非周期信號,功率信號與能量信號等等。常用的時間信號有:正弦型信號、沖激信號、階躍信號、門信號、衰減型指數信號、抽樣信號等。
例1:抽樣信號的數學表示與MATLAB實現
Sa(t)=ksin(ω(t-θ)/(ω(t-θ)),其中k,θ,ω為常數
function Sa(k1,k2,k3,t1,t2,Sa1,Sa2)
t=t1:0.001:t2;
x=k2*(t-k3);
y=k1*sin(x)./x;
plot(t,y,'r'),xlabel('t'),ylabel('Sa(t)');
axis([t1,t2,Sa1,Sa2]),
title('抽樣信號Sa(t)');
grid on;
程序中的k1,k2,k3分別表示抽樣函數的振幅,角頻率,相位,t1,t2分別表示時間軸的起點與終點,Sa1,Sa2分別表示幅度軸的起點與終點,通過調用Sa函數,選擇不同的參數可以得到需要的波形表示,如Sa(1,pi,2,-3,7,-0.4,1.2)可以得到圖1。
圖1 抽樣信號Sa(t)波形
例2:方波信號的傅立葉分解與MATLAB實現
■
function Dx(A,n,t1,t2,Dx1,Dx2)
t=t1:0.01:t2;
y=zeros(n,max(size(t)));
x=zeros(n,max(size(t)));
for k=1:2:n
x1=(4*A/pi)*sin(k*t)/k;
x(k,:)=x(k,:)+x1;
y((k+1)/2,:)=x(k,:);
end
plot(t,y(1:n,:));xlabel('t'),ylabel('Dx(t)');
axis([t1,t2,Dx1,Dx2]),
title('方波信號分解Dx(t)');
grid on;
程序中的A表示方波的振幅,n表示分解諧波的階數,t1,t2分別表示時間軸的起點與終點,,Dx1,Dx2分別表示幅度軸的起點與終點,通過調用方波分解函數Dx,選擇不同的參數可以得到需要的波形表示,如Dx(1,11,0,2*pi,-1.5,1.5)可以得到圖2。
圖2 方波信號傅解分解的波形
例3:門函數信號的傅立葉變換與MATLAB實現
■
function FT(A,m,n,q,t1,t2,t3)
t=t1:t2:t3;
f=stepfun(t,-m/2)-stepfun(t,m/2);
k=0:n;
W=k*q/n;
F=f*exp(-j*t'*W)*t2;
F=real(F);W=[-fliplr(W),W(t3:n+1)];
F=[fliplr(F),F(t3:n+1)];
subplot(2,1,1);plot(t,f);
xlabel('t');ylabel('g(t)');axis([-m,m,-0.2,1.5*A]);
title('門函數g(t)');
grid on;
subplot(2,1,2);plot(W,F);
xlabel('W');ylabel('F(W)');
title('門函數g(t)的傅氏變換');
grid on;
程序中的A,n分別表示門函數的振幅與脈寬,n表示采樣點數,t1,t2,t3分別表示時間軸的起點、間隔與終點,q為角頻率,通過調用門函數的傅氏變換FT,選擇不同的參數可以得到需要的波形表示,如FT(1,2,500,10*pi,-2,0.01,2)可以得到圖3。
圖3 門信號傅氏變換的波形
綜上所述,利用MATLAB編程,易于上手,調試方便,尤其采用M文件的工作方式編程,只要選擇不同的參數值,就可以對信號的性質、分解與合成、時間-幅度分布、頻率-幅度分布、時域與頻域之間的對應關系、周期時間信號對應離散頻譜、非周期時間信號對應連續頻譜等特征有一個明晰的、量的感性認識,這對正確理解信號與系統的關系、分析和設計傳輸系統是非常有益的,同時也極大地提高了學生自主設計系統的興趣和實際應用能力。
3.2 線性時不變(LTI)時間系統的響應與MATLAB實現
線性時不變(LTI)時間系統可分為連續時間系統和離散時間系統,分別用線性常系數微分方程和用線性常系數差分方程來表征。
系統的響應一般包括兩部分,即由當前輸入所產生的零狀態響應和由初始狀態所產生的零輸入響應。對于低階系統,可以手工給出解析解,但對于高階系統,利用MATLAB編程計算就比較容易多了。
例:已知系統■
求系統的零輸入響應,零狀態響應,全響應,沖激響應。
function ZS(t1,t2)
b=[1];
a=[1 2 1 0];
[A B C D]=tf2ss(b,a);
sys1=tf(b,a);
sys2=ss(A,B,C,D);
t=t1:0.1:t2;
x=exp(-3*t);
zi=[1 1 1];
y1=lsim(sys1,x,t);
y3=lsim(sys2,x,t,zi);
y2=y3-y1;
y4=impulse(sys1,t);
subplot(2,2,1);plot(t,y1);
xlabel('t');ylabel('y1(t)');
title('零狀態響應');
grid on;
subplot(2,2,2);plot(t,y3);
xlabel('t');ylabel('y3(t)');
title('全響應');
grid on;
subplot(2,2,3);plot(t,y2);axis([t1,t2,0,5]);
xlabel('t');ylabel('y2(t)');
title('零輸入響應');
grid on;
subplot(2,2,4);plot(t,y4);axis([t1,t2,0,1.2]);
xlabel('t');ylabel('y4(t)');
title('沖激響應');
grid on;
程序中的t1,t2分別表示時間軸的起點與終點,通過調用響應函數ZS,選擇不同的參數可以得到需要的波形表示,如ZS(0,20)可以得到圖4。
圖4 連續時間系統的響應
從上例可以看出,利用MATLAB編程來求系統的響應,不僅省去了復雜的手工計算,而且還給出了圖形解,大大地提高了學習的效率。
4 結束語
實踐證明,將MATLAB運用到《信號與系統》的教學中,突破了傳統教學模式的瓶頸,解決了理論課時不足,實驗環節薄弱,學生畏難厭學的矛盾,化被動學習為主動實踐,提高了教學質量,教學效果改善明顯,同時也為《數字信號處理》、《隨機信號分析》等專業課教學提供了借鑒作用。
參考文獻:
[1] 和衛星,許波.信號與系統分析. 西安:西安電子科技大學出版社,2007.
[2] 黨宏社. 信號與系統實驗(MATLAB版).西安:西安電子科技大學出版社,2007.
[3] 尚濤,石端偉,安寧,張李義.工程計算可視化與MATLAB實現. 武漢: 武漢大學出版社,2001.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。