張 玉 葉
(咸陽師范學院 物理與電子工程學院,陜西 咸陽 712000)
Matlab作為目前科技工程界三大軟件之一,以其強大的數(shù)據(jù)處理和圖形圖像表現(xiàn)能力在電氣信息類專業(yè)備受關(guān)注。在歐美大學,如應(yīng)用代數(shù)、自動控制、數(shù)字信號處理、電力系統(tǒng)仿真等課程都把Matlab作為教學內(nèi)容,Matlab是攻讀學位必須掌握的基本工具[1]。而國內(nèi)電氣信息類專業(yè)基本上將Matlab定位為一種輔助教學、實驗的軟件工具,并未作為一種必須掌握的基本工具來要求。如果學生將Matlab語言作為純粹的一門計算機語言進行學習,那么該課程需要掌握的指令及編程技巧非常繁雜,也就是入門容易精通困難,應(yīng)用能力差。但是如果根據(jù)授課班級的專業(yè),考慮學科特點,不要試圖掌握Matlab的每一個功能,熟悉和專業(yè)最相關(guān)的部分,這樣避免沖淡其他專業(yè)課程的主題,也可以盡力發(fā)揮Matlab語言的優(yōu)勢,不失為一種實用可靠的教學法。那么,如何讓學生在本課程的學習中提高興趣,掌握相關(guān)知識為后續(xù)課程搭建好學習和實驗平臺,本文結(jié)合作者Matlab 課程多年的教學經(jīng)驗,對該課程的教學進行了探討。
所謂教學細節(jié),指課堂教學過程中所發(fā)生的很細小的環(huán)節(jié),是教學整體行為的具體分解,是構(gòu)成教學行為的最小單位。通過對課堂教學細節(jié)的捕捉可見教學功力與課堂效率[2]。以實例來說明該教學環(huán)節(jié)的操作過程。
實例1利用rand函數(shù)產(chǎn)生(0,1)間均勻分布的10×10隨機矩陣A,然后統(tǒng)計A中大于等于0.6的元素的個數(shù)。
分析:根據(jù)要求,先判斷10×10隨機矩陣A中每一個元素的具體數(shù)值,和0.6作比較,然后統(tǒng)計矩陣中滿足要求的元素的個數(shù),編程如下:
A=rand(10);
sum=0;
fori=1:100
ifA(i)>0.6
sum=sum+1;
end
end
但是,在教學中,抓住統(tǒng)計函數(shù)特點這一細節(jié),提醒學生盡量擺脫c語言編程的習慣,總愛用循環(huán),要掌握矢量化的精髓。這樣用以下兩條語句代替上面程序段完全可以實現(xiàn)實例1的要求。
A=rand(10);
sum(sum(A>0.6))
實例2用Matlab語言繪制任意半徑的圓。
分析:繪制圓大致有以下3種方法:
方法1根據(jù)圓方程用隱函數(shù)ezplot來實現(xiàn),語句ezplot(‘x^2+y^2-4’)繪制半徑為2的圓。
方法2rectangle指令用于創(chuàng)建矩形,格式rectangle('Position',[x0,y0,w,h],'Curvature',[x,y]);[x,y]指定矩陣邊的曲率,x和y取值范圍是從0(無曲率)到1(最大曲率)。值[0,0]繪制一個成直角的矩形,值[x,y]繪制一個橢圓。故用以下兩條Matlab語句,調(diào)整矩陣邊曲率結(jié)合坐標軸控制命令axis可繪制圓曲線[3]。rectangle('Position',[5-3,10-3,2*3,2*3],'Curvature',[1,1]); axis square;
方法3轉(zhuǎn)換成參數(shù)函數(shù)來繪制圖形[4]。
a=input('輸入圓心坐標x=');
b=input('輸入圓心坐標y=');
r=input('輸入半徑r=');
theta=0:0.01*pi:2*pi;
x=r*cos(theta)+a;
y=r*sin(theta)+b;
plot(x,y);
axis square;
抓住繪制圓曲線的參數(shù)方程的方法3的細節(jié),即參數(shù)theta=0:0.01*pi:2*pi;的間隔和起始角度,結(jié)合繪圖函數(shù)plot的繪圖機理,引申到可以繪制任意多邊形。如圖1所示。
theta=pi/2:2*pi/3:2*pi+pi/2;
x=cos(theta);y=sin(theta);
subplot(2,2,1)
plot(x,y)
title('正三角形')
theta=pi/4:pi/2:2*pi+pi/4;
x=cos(theta);y=sin(theta);
subplot(2,2,2)
plot(x,y)
title('正方形')
theta=0:pi/3:2*pi;
x=cos(theta);y=sin(theta);
subplot(2,2,3)
plot(x,y)
title('六角形')
theta=0:pi/150:2*pi;
x=cos(theta);y=sin(theta);
subplot(2,2,4)
plot(x,y)
title('圓')
正三角形正方形六邊形圓
圖1 任意多邊形的繪制
細節(jié)捕捉在Matlab語言教學中非常實用,通過細節(jié)教學,學生的課堂變得不再枯燥,學生總有探索下去的想法,比如用Matlab語言表示ex常見的兩種錯誤表達,exp^x和e^x,抓住細節(jié),學生就會準確表達為exp(x)。還有Matlab中的符號,一般都要用英文輸入法,不用中文輸入法,否則會出錯等等。當然,細節(jié)的捕捉要靠平時的積累,這種教學法在教學中受到了學生的歡迎和好評。
在Matlab語言授課過程中發(fā)現(xiàn),我們不能試圖掌握Matlab的每一個功能,要熟悉和專業(yè)最相關(guān)的部分。在知識爆炸的今天,不僅要傳授給學生知識,更重要的是要在有限的時間內(nèi)教給學生更有用的知識,提高學習的效率。如對電氣工程及其自動化專業(yè)的學生講授Matlab語言時,知道學生緊接著要開自動控制原理這門專業(yè)課,在專業(yè)課程學習中,學生普遍感覺自動控制原理中計算和繪圖很多,望而生畏。而將Matlab 引進自動控制原理教學是當前普遍的做法,讓學生掌握Matlab 工具,運用Matlab 輔助教學是當前自動控制理論教學的一個重要手段[5-7]。
先要求學生運行以下程序段,結(jié)果如圖2所示。
G=tf([100],[1 5 0]);
Gb=feedback(G,1,-1);
subplot(1,2,1)
step(Gb,2);
t=0:0.1:2;
y1=1.05*ones(size(t));
y2=0.95*ones(size(t));
plot(t,y1,'r:',t,y2,'r:')
title('系統(tǒng)單位階躍響應(yīng)')
subplot(1,2,2)
wn=10;
for ebsai=0:0.25:1.25
Gb1=tf([wn^2],[1 2*ebsai*wn wn^2]);
step(Gb1,2)
title('ξ 不同時階躍響應(yīng)')
hold on
end
通過程序的演示,學生不但掌握plot,step,grid on,hold on,gtext等繪圖指令,而且對于自動控制原理中阻尼比變化對系統(tǒng)性能的影響也有了直觀的認識[8-9]。同時,理解多項式的Matlab表達方法,及矩陣中兩個重要函數(shù)size(A)和length(A)的使用技巧。并且在給圖形加標注的過程中,學習Matlab圖形的控制與表現(xiàn),不僅Matlab技能提高,也對專業(yè)課打下良好基礎(chǔ)。
關(guān)于如何提高學生學習興趣,在Matlab語言課堂教學中,立足選定的教材,卻又高于教材,大量積累Matlab解決同一問題不同方法的素材,提高課堂教學的效率,學生的學習積極性非常高,下面就實踐教學給出若干做法,經(jīng)實踐檢驗,效果良好。
傳統(tǒng)的Matlab語言實驗教學模式至少存在以下問題: ①學生做實驗時多數(shù)處于被動狀態(tài); ② 驗證性實驗占的比例偏大; ③實驗與工程實際和科研訓練聯(lián)系少;Matlab語言層次化實驗教學可兼顧不同層次學生的實驗效果,也可保證部分學生的實踐能力提升[10-12],框圖如圖3所示。
圖3 Matlab語言實驗課程層次化教學體系
(1) 基本實驗。Matlab的基本運算功能可以大大降低繁瑣的計算工作量,如求矩陣A的秩,只要將A輸入到Matlab命令窗口,調(diào)用rank(A)命令即可。也正是由于這個特點,很多學生做實驗的過程中機械的跟隨指令操作,不會舉一反三。因此,在實驗過程中,教師可以嘗試調(diào)整實驗和理論課順序。常規(guī)教學是先上理論課,再上實驗課加強理解,本人嘗試過在理論課之前,先讓學生上機實驗,學生會出現(xiàn)很多語法錯誤、調(diào)試錯誤、書寫錯誤、知識點錯誤等,簡單問題,可以在實驗課堂消化解決掉,而對于一些典型的錯誤,帶到課堂演示說明,等到下一個實驗,學生一般不會再出現(xiàn)同樣的錯誤了。教師也不用過多參與學生的實驗過程,學生提出的問題會越來越多,問題的深度和廣度也越來越寬泛,學生的主觀能動性得到調(diào)動。這樣,學生真正理解了求解問題的方法。
(2) 綜合實驗。在基本實驗階段,學生掌握Matlab的基本語句解決基本運算、基本的圖形可視化及基本專業(yè)課仿真問題。在綜合實驗項目中,可以訓練學生靈活運用Matlab的能力。如學習了多項式的基本運算,在綜合實驗中可安排學生做多項式的擬合實驗,一方面理解最小二乘法原理,另一方面利用Matlab軟件輔助學習一種數(shù)據(jù)處理方法。此方法在后續(xù)專業(yè)課學習中頻繁使用。多項式擬合的一般方法和擬合曲線如圖4所示。
x=0:0.1:1;
y=[-0.447,1.978,3.11,5.25,5.02,,…
4.66,4.01,4.58,3.45,5.35,9.22];
xx=0:0.05:1;
[p,s]=polyfit(x,y,3);
[yy,err]=polyval(p,xx,s);
plot(x,y,'.-',xx,yy,'r*-',xx,yy+err,'g.-',xx,yy-err,'g.-') ;legend('采樣曲線','擬合曲線','誤差曲線')
圖4 曲線擬合
(3) 創(chuàng)新實驗。Matlab有各專業(yè)的仿真工具箱,結(jié)合專業(yè)化的圖像處理功能,在數(shù)字信號處理、信號與系統(tǒng)、自動控制原理、電力電子變流技術(shù)等專業(yè)課程中發(fā)揮強大作用。我們可以吸收對科研有興趣的學生參與科研活動,例如“基于VB與Matlab的自動控制系統(tǒng)分析”實驗,可作為開放實驗,吸收有興趣的學生組隊研究,研究Matlab軟件與VB軟件的接口如何實現(xiàn),也可以研究如何在此基礎(chǔ)上形成一個界面系統(tǒng),進行控制系統(tǒng)的分析。這樣會形成學生和教師之間的科研互動,提高彼此的學業(yè)水平和學術(shù)水平[13]。
實驗報告是實驗教學的收尾環(huán)節(jié)。在實驗報告環(huán)節(jié)一般存在以下問題: ①形式化嚴重,潦草敷衍; ②沒有實驗總結(jié)與反思; ③實驗中出現(xiàn)過哪些錯誤及如何改正的沒有體現(xiàn)[14-15]。出現(xiàn)普遍現(xiàn)象的原因經(jīng)過反思,有學生的原因,也有教師的原因。從“教”的角度來看,至少有以下幾點需要教師重視:
(1)合格的實驗報告對于培養(yǎng)學生嚴謹?shù)目茖W態(tài)度至關(guān)重要,但是一般情況下,教師重視實驗內(nèi)容而很容易忽視實驗報告的撰寫?;诖耍覀冊搹拈_始就要重視實驗報告的教學。從實驗報告的書寫規(guī)范,圖、表等的處理規(guī)范等方面做好要求。
(2)Matlab語言實驗區(qū)別于別的專業(yè)課程實驗,會出現(xiàn)許多指令、程序與圖、表,所以要在教學中滲透合理排版,圖表處理等實驗報告要求的元素。只要稍微留心,學生實驗報告質(zhì)量會得到很大提高。
(3)務(wù)必做好實驗結(jié)果的分析與總結(jié)。一個實驗做下來,每個同學都會有不同的錯誤出現(xiàn),數(shù)據(jù)處理的方法、程序思路、圖形處理、排版等,要求學生隨時記錄出現(xiàn)的問題并在報告中體現(xiàn)。
總之,Matlab語言實驗報告教學環(huán)節(jié),教師一定要提前做好規(guī)范要求,最好是將寫的特別優(yōu)秀的實驗報告展示,形成規(guī)范的實驗教學,提高教學質(zhì)量。
Matlab語言這門課程有其自身特點,絕大多數(shù)高等院校都將Matlab設(shè)置為選修課,且學時分配非常少。因此,學生對該課程不重視。另外,由于Matlab課程是在各專業(yè)課學習之前開設(shè),所以學生對專業(yè)課涉及的內(nèi)容不甚了解,更談不上其在后續(xù)專業(yè)課程中的應(yīng)用了。因此,任課教師在課程之初要引導學生正確認識課程的重要性。在此基礎(chǔ)上,本文從課堂教學和實驗教學兩方面的關(guān)鍵問題引發(fā)思考,探討課程教學方法,期望推進Matlab教學質(zhì)量,進而提高學生專業(yè)課學習效率。
參考文獻(References):
[1] 王玉芳,葉小嶺,陳逸菲. 電氣信息類專業(yè)Matlab課程教學改革探討[J]. 軟件導刊,2016,15(11):218-222.
[2] 張玉葉. “自動控制原理”課程中的細節(jié)教學[J]. 電氣電子教學學報,2014,36(3):68-70.
[3] 曹弋. Matlab教程及實訓[M]. 北京:機械工業(yè)出版社,2009.
[4] 張志涌,楊祖櫻. Matlab教程(2009 年修訂)[M]. 北京:北京航空航天大學出版社,2009.
[5] 劉云龍,王瑞蘭,劉麗君,等.基于Matlab仿真的自動控制原理實驗教學改革[J]. 實驗室研究與探索,2015,34(6):102-105.
[6] 劉 中,袁少強,張軍香.自動控制原理實驗課的改革與實踐[J]. 實驗室研究與探索,2013,32( 11) : 403-406.
[7] 胡壽松. 自動控制原理[M]. 北京: 科學出版社,2013.
[8] 蓋彥榮,玄金紅. 利用Matlab來改進自動控制原理實驗[J]. 實驗科學與技術(shù),2008(10):68-69.
[9] 劉吉軒,張小棟,陳花玲. 測試技術(shù)層次化實驗教學改革與實踐[J]. 實驗室研究與探索,2013,32(1):125-126.
[10] 王萬良. “自動控制原理”課程教學中的幾個關(guān)鍵問題[J]. 中國大學教學,2011(8):48-51
[11] 梁 麗. 構(gòu)建分層次實驗教學體系培養(yǎng)創(chuàng)新型人才[J]. 實驗室研究與探索,2014(1):50.
[12] 肖洪祥,楊志清,雷亞平. 談電子技術(shù)綜合實驗的實驗報告書寫方法及模式[J]. 教育教學論壇,2011,12(5):60-61.
[13] 肖 念. 對中國大學教學改革邏輯的思考[J]. 中國大學教學,2012(7):7.
[14] 吳忠強,嵇勝龍. Matlab語言在實驗教學中的應(yīng)用[J]. 教學研究,2000,23(2):10-11.
[15] 朱燕紅,戴 斌. 實驗報告結(jié)構(gòu)化評閱探索與研究[J]. 實驗技術(shù)與管理,2016,33(12):254-257.