浅谈医用物理教学中基于MATLAB的电路仿真
2017-04-06吉日木图张文洁李忠贤
薛 康,吉日木图,张文洁,李忠贤,周 涛
(1.内蒙古医科大学 计算机信息学院,内蒙古 呼和浩特 010110;2.内蒙古农业大学附属中学,内蒙古 呼和浩特 010010)
浅谈医用物理教学中基于MATLAB的电路仿真
薛 康1,吉日木图1,张文洁2,李忠贤1,周 涛1
(1.内蒙古医科大学 计算机信息学院,内蒙古 呼和浩特 010110;2.内蒙古农业大学附属中学,内蒙古 呼和浩特 010010)
将计算机仿真技术应用于医用物理学中,可以起到很好的教学效果.MATLAB简单易用,是医用物理学教学中理想的仿真软件.以医用物理学中一些电路问题为例,介绍如何用MATLAB及其组件simulink进行仿真.
医用物理学;计算机仿真;MATLAB;Simulink;电路
1 引言
随着信息技术在教学中的广泛应用,教学手段和教学理念不断进步与发展,教学模式已发生了深刻的变革.如,计算机多媒体技术的应用使教师的教学已逐渐脱离了黑板和粉笔,大量的文字、图形可由计算机预先生成,再投影出来,已不需要教师在课堂上现场书写或绘制,节省了很多课堂教学时间;原先不可能在黑板上实现的视频和动画可以被播放,大大丰富了教学内容的表现形式.网络技术的应用使学生的学习脱离了时间和空间的限制,学生可以随时随地在网络环境下通过“慕课”等在线课堂形式进行学习,而且可与教师实时的交流、互动,学习的形式更加灵活.计算机仿真技术[1],是当今信息技术高度发展的产物,在生物医学、工业设计、国防高科、系统设计与开发等各领域中都发挥着重要作用.近几年,计算机仿真技术被越来越多的应用于教育领域,尤其在各高校理工类课程的教学中起到了良好的教学效果.
医用物理学是各医学院校临床医学、药学、影像等专业学生的公共必修课.物理学的理论需要用严谨的数学公式来表述,而且所涉及的概念和物理过程往往比较复杂而抽象;同时,医学专业学生所学课程涉及面广、门类较多,无法在医用物理学这门课上投入更多精力.因此,许多学生存在畏难情绪,学习物理的兴趣不高,学习成绩不理想[2].如何激发学生学习物理的兴趣并在有限的学时内提高教学质量,是每一位从事医用物理教学的高校教师所必须面对的问题.将计算机仿真技术运用于医学物理学的理论与实验教学当中,建立起虚拟的物理场景,把抽象的规律和复杂的现象以可视化的方式呈现于学生眼前,使其建立起清晰的物理图象,可以大大提高学生学习兴趣、加深学生理解,从而达到理想的教学效果.同时,利用计算机仿真技术可以实现虚拟实验,减少医用物理实验教学的资金投入,降低实验仪器和材料的损耗,能够有效地降低教育、教学成本.
在当前教学数字化的大背景下,为更好的适应时代发展的需求,老师在教学中除了能编写一些仿真程序演示给学生外,还需引导学生自己编写程序实现仿真,使之能够独立完成一些虚拟实验、解决一些实际问题.可以用于仿真的软件有很多,如VC、VB、COMSOL Multiphysics等,但这些软件一般适用于具有专业背景和较高编程水平的人员,对于医学专业的学生而言,使用起来有一定的困难.相对来说,MATLAB语言简单易懂,更容易上手,并且,MATLAB包含各种强大的工具箱和专门用于仿真的Simulink模块,是老师和学生编写仿真程序的一个理想选择.医用物理学的各部分内容,如刚体的运动、流体的运动、振动和波、热学、静电场、磁场、光学等内容均可以用MATLAB仿真.本文主要对医用物理学中电路部分涉及到的一些问题,就如何采用MATLAB进行仿真谈谈自己简单的认识.
2 MATLAB与Simulink概述
MATLAB,即Matrix Laboratory,可译为“矩阵实验室”.该软件是上世纪80年代,首先由美国Cleve Moler教授编写的一种数学软件,其第一个正式的版本于1984年由Math Works公司推出[3]. MATLAB集成了数据的分析与可视化、科学计算、符号计算等功能,为用户提供了良好的交互式环境.MATLAB具有较强的开放性和可拓展性:各领域的专家们针对各自特定的需求设计和开发了许多功能强大的工具箱和模块组,使用者可以直接利用现成的程序解决自己领域中的问题,大大提高了工作效率;并且,用户可以根据实际需要修改或扩充已有的工具箱或模块,使用灵活.经过三十多年的发展,MATLAB软件不断升级,其用户界面、错误提示与分析功能、程序调试系统、查询与帮助系统等更加完善,操作更为简单,使用更加方便,已成为广大的科研和工程人员所广泛使用的一款软件.
Simulink是MATLAB的重要组件之一,专门用于动态系统的建模、仿真与分析[4].作为系统设计与开发的平台,Simulink含有丰富的模型库,可以应用于诸如航空航天、通讯、机器视觉、数字信号处理、生物信息、金融等众多领域.Simulink的操作界面具有很强的交互性,使用时不需要编写代码,只需在模型库中选取所需的模型,用鼠标把这些模型拖入到界面中合理的位置上并按照一定的方式用信号线将各个模型连接,就可以建立系统的模型.
3 MATLAB电路仿真实例
不同版本的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 电容器放电过程仿真结果
4 结束语
综上所述,在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