薛 康,吉日木圖,張文潔,李忠賢,周 濤
(1.內蒙古醫科大學 計算機信息學院,內蒙古 呼和浩特 010110;2.內蒙古農業大學附屬中學,內蒙古 呼和浩特 010010)
淺談醫用物理教學中基于MATLAB的電路仿真
薛 康1,吉日木圖1,張文潔2,李忠賢1,周 濤1
(1.內蒙古醫科大學 計算機信息學院,內蒙古 呼和浩特 010110;2.內蒙古農業大學附屬中學,內蒙古 呼和浩特 010010)
將計算機仿真技術應用于醫用物理學中,可以起到很好的教學效果.MATLAB簡單易用,是醫用物理學教學中理想的仿真軟件.以醫用物理學中一些電路問題為例,介紹如何用MATLAB及其組件simulink進行仿真.
醫用物理學;計算機仿真;MATLAB;Simulink;電路
隨著信息技術在教學中的廣泛應用,教學手段和教學理念不斷進步與發展,教學模式已發生了深刻的變革.如,計算機多媒體技術的應用使教師的教學已逐漸脫離了黑板和粉筆,大量的文字、圖形可由計算機預先生成,再投影出來,已不需要教師在課堂上現場書寫或繪制,節省了很多課堂教學時間;原先不可能在黑板上實現的視頻和動畫可以被播放,大大豐富了教學內容的表現形式.網絡技術的應用使學生的學習脫離了時間和空間的限制,學生可以隨時隨地在網絡環境下通過“慕課”等在線課堂形式進行學習,而且可與教師實時的交流、互動,學習的形式更加靈活.計算機仿真技術[1],是當今信息技術高度發展的產物,在生物醫學、工業設計、國防高科、系統設計與開發等各領域中都發揮著重要作用.近幾年,計算機仿真技術被越來越多的應用于教育領域,尤其在各高校理工類課程的教學中起到了良好的教學效果.
醫用物理學是各醫學院校臨床醫學、藥學、影像等專業學生的公共必修課.物理學的理論需要用嚴謹的數學公式來表述,而且所涉及的概念和物理過程往往比較復雜而抽象;同時,醫學專業學生所學課程涉及面廣、門類較多,無法在醫用物理學這門課上投入更多精力.因此,許多學生存在畏難情緒,學習物理的興趣不高,學習成績不理想[2].如何激發學生學習物理的興趣并在有限的學時內提高教學質量,是每一位從事醫用物理教學的高校教師所必須面對的問題.將計算機仿真技術運用于醫學物理學的理論與實驗教學當中,建立起虛擬的物理場景,把抽象的規律和復雜的現象以可視化的方式呈現于學生眼前,使其建立起清晰的物理圖象,可以大大提高學生學習興趣、加深學生理解,從而達到理想的教學效果.同時,利用計算機仿真技術可以實現虛擬實驗,減少醫用物理實驗教學的資金投入,降低實驗儀器和材料的損耗,能夠有效地降低教育、教學成本.
在當前教學數字化的大背景下,為更好的適應時代發展的需求,老師在教學中除了能編寫一些仿真程序演示給學生外,還需引導學生自己編寫程序實現仿真,使之能夠獨立完成一些虛擬實驗、解決一些實際問題.可以用于仿真的軟件有很多,如VC、VB、COMSOL Multiphysics等,但這些軟件一般適用于具有專業背景和較高編程水平的人員,對于醫學專業的學生而言,使用起來有一定的困難.相對來說,MATLAB語言簡單易懂,更容易上手,并且,MATLAB包含各種強大的工具箱和專門用于仿真的Simulink模塊,是老師和學生編寫仿真程序的一個理想選擇.醫用物理學的各部分內容,如剛體的運動、流體的運動、振動和波、熱學、靜電場、磁場、光學等內容均可以用MATLAB仿真.本文主要對醫用物理學中電路部分涉及到的一些問題,就如何采用MATLAB進行仿真談談自己簡單的認識.
MATLAB,即Matrix Laboratory,可譯為“矩陣實驗室”.該軟件是上世紀80年代,首先由美國Cleve Moler教授編寫的一種數學軟件,其第一個正式的版本于1984年由Math Works公司推出[3]. MATLAB集成了數據的分析與可視化、科學計算、符號計算等功能,為用戶提供了良好的交互式環境.MATLAB具有較強的開放性和可拓展性:各領域的專家們針對各自特定的需求設計和開發了許多功能強大的工具箱和模塊組,使用者可以直接利用現成的程序解決自己領域中的問題,大大提高了工作效率;并且,用戶可以根據實際需要修改或擴充已有的工具箱或模塊,使用靈活.經過三十多年的發展,MATLAB軟件不斷升級,其用戶界面、錯誤提示與分析功能、程序調試系統、查詢與幫助系統等更加完善,操作更為簡單,使用更加方便,已成為廣大的科研和工程人員所廣泛使用的一款軟件.
Simulink是MATLAB的重要組件之一,專門用于動態系統的建模、仿真與分析[4].作為系統設計與開發的平臺,Simulink含有豐富的模型庫,可以應用于諸如航空航天、通訊、機器視覺、數字信號處理、生物信息、金融等眾多領域.Simulink的操作界面具有很強的交互性,使用時不需要編寫代碼,只需在模型庫中選取所需的模型,用鼠標把這些模型拖入到界面中合理的位置上并按照一定的方式用信號線將各個模型連接,就可以建立系統的模型.
不同版本的MATLAB有所差異,本文涉及到的所有仿真使用的MATLAB版本為:MATLAB R2012a.
3.1 通過編寫代碼實現仿真

圖1 直流電路原理圖
實例1 直流電路.已知電阻R1、R2、R3的阻值分別為1Ω、4Ω、2Ω,直流電源E1、E2、E3的電動勢分別為6V、8V、6V,假設不考慮電源的內阻,按圖1連接各電路元件得到一直流電路.設各條支路中的電流為I1、I2、I3,則可以根據基爾霍夫定律建立此電路的數學模型如公式(1)所示,該模型為一個三元一次的線性方程組.

代入已知參數,求解方程組(如公式(2)所示),可以得到各支路電流及各電阻上的電壓值如下:

根據該電路的數學模型,可以通過在MATLAB中編寫代碼的方式實現仿真,過程如下:
第一步,將線性方程組表示成矩陣乘法的形式.
將公式(2)所示方程組,恒等變形為如下形式:

則可將線性方程組,表示為矩陣乘法的形式

第二步,根據上述模型,在Command Window界面窗口中輸入如下代碼:
A=[1-1-1;1 4 0;0-4 2];%建立系數矩陣A
C=[0;14;-14];%建立常數列相量C
I=inv(A)*C;%求解未知列向量I,即I1、I2、I3
%inv(A)表示求系數矩陣A的逆矩陣
U=I.*[1;4;2]%求解電壓值向量U,即U1、U2、U3
執行指令后顯示結果為:

另外,也可利用solve函數仿真,程序代碼如下:

執行指令后顯示結果為:

由以上仿真過程可以看出,通過編寫代碼實現電路的仿真,首先要根據物理規律建立起電路的數學模型,然后再利用MATLAB中的相關算法和函數編寫程序.
3.2 利用Simulink實現仿真
在MATLAB的Command Window界面窗口中輸入指令:simulink,就可以打開Simulink Library Browser,即“模型庫瀏覽器”.如圖2所示,在Simulink Library Browser的界面中,點擊菜單FileNewModel,就會出現“模型編輯器”窗口,在該窗口中即可創建模型、進行仿真.模型文件以“*. mdl”的格式存盤(*為表示文件名,mdl為表示擴展名).

圖2 模型庫瀏覽器界面
電路的仿真一般可以采用Sim Power Systems,即“電力系統仿真模型庫”.在Simulink Library Browser中找到SimscapeSim Power Systems,即可打開該模型庫,調用所需的電路元器件.
3.2.1 實例1的Simulink仿真

圖3 直流電路Simulink仿真結果
圖3所示為“實例1”中電路的simulink仿真結果.用simulink仿真非常直觀,只要將所需元件模型對應的圖標按照原始電路圖連接并設置好各元件參數即可建立電路的模型,然后在模型編輯器的工具欄中點擊“Start simulation”(形如:?)按鈕仿真,仿真結果直接顯示在電路模型框圖中.需要說明的是:利用Sim Power Systems模型庫進行電路仿真必須含有power gui模塊,用于設定模型參數和仿真算法,如果沒有,仿真過程會出錯.
3.2.2 二極管的單向導電性仿真
實例2 二極管的單向導電性.如圖4所示,將交流電壓源、二極管、電阻連接成一個串聯電路,電源和電阻兩端分別接有兩個示波器.一般情況下系統默認的Simulation time(仿真起止時間間隔)為10s,考慮到該模型中設定的交流電壓頻率為50HZ,故此在模型編輯器工具欄中將Simulation time設定為0.1s以合理的顯示出仿真結果.
從仿真結果可以看出二極管加正向電壓時,導通,相當于開關閉合,電阻兩端有電壓輸出,其電壓隨時間變化的規律與交流電源輸出電壓的波形一致;二極管加負向電壓時,截止,相當于開關斷開,電阻兩端電壓為零.

圖4 二極管單向導電性仿真結果
模型編輯器
3.2.3 電容器的充放電過程仿真
實例3.1 電容器的充電過程.如圖5(a)所示,將直流電壓源、電阻和電容串聯構成電路;電容器兩端并聯一電壓測量模塊,再接一示波器,用于顯示仿真結果.此電路中省略了開關,需通過powergui設定電容C兩端電壓的初始值為0V;具體做法如圖5(b)所示,打開powergui模塊,點擊Initial States Setting(初始狀態設置)按鈕,在打開的窗口中將Set Selected electrical state中的值設定為0,即可.

圖5 電容器充電電路仿真

圖6 電容器充電過程仿真結果
實例3.2 電容器的放電過程.仿真模型如圖7所示,電容器兩端的初始電壓值設置為6V.電容器兩端電壓隨時間變化的函數為可知放電時間也是由τ確定的;圖7中顯示了C、R分別取不同值時的仿真結果,可以看出C與R的乘積越大,放電時間越長.

圖7 電容器放電過程仿真結果
綜上所述,在MATLAB中采用編寫代碼的方式實現電路仿真比較抽象,不如用Simulink仿真直觀,對于醫學專業學生而言,更容易入門.MATLAB仿真不只局限于電路問題,除了物理課程外,醫學統計學、生物力學、醫學電子學、醫學影像設備、眼應用光學等醫學專業學生的課程均可使用.需要注意的是:MATLAB是一種解釋性語言、運行效率相對較低、不可直接生成可執行文件,因此,在某些場合,需要將其代碼轉編譯成C語言等高級語言,生成可執行文件,以方便使用.
總之,學習和使用MATLAB仿真技術的過程有利于激發學生的求知欲和探索精神,提高學生們的自學能力;利于培養學生利用計算機解決實際問題的意識,為今后從事科研工作起到積極的引導作用.
〔1〕劉興堂,等.仿真科學技術及工程[M].北京:科學出版社,2013.
〔2〕薛康,冉雪江,斯琴.醫用物理學教學改革淺見[J].內蒙古教育,2013(03):37-38.
〔3〕劉衛國.MATLAB程序設計教程[M].北京:中國水利水電出版社,2010.
〔4〕姚俊,馬松輝.Simulink建模與仿真[M].西安:西安電子科技大學出版社,2002.
TP391.9
A
1673-260X(2017)03-0033-04
2016-12-16
2015-2016年度內蒙古自治區高等學校教學改革科學研究項目(2015NMJG056)
吉日木圖,副教授.E-mail:jrmt2003@aliyun.com