《建模与仿真及其医学应用》_第1页
《建模与仿真及其医学应用》_第2页
《建模与仿真及其医学应用》_第3页
《建模与仿真及其医学应用》_第4页
《建模与仿真及其医学应用》_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、建模与仿真及其医学应用实 验 讲 义天津医科大学生物医学工程系2004年实验一 系统建模的MATLAB实现一、实验目的:1学习MATLAB基本知识。2掌握数学模型的MATLAB实现:时域模型、状态空间模型和零极点模型。3学习用MATLAB实现系统外部模型到内部模型的转换。4学习用MATLAB实现系统模型的连接:串联、并联、反馈连接。5了解模型降阶的MATLAB实现。二、实验内容1系统的实现、外部模型到内部模型的转换(1) 给定连续系统的传递函数,利用MATLAB建立传递函数模型,微分方程,并转换为状态空间模型。(2)已知某系统的状态方程的系数矩阵为: 利用MATLAB建立状态空间模型,并将其转

2、换为传递函数模型和零极点模型。(3)已知系统的零极点传递函数为,利用MATLAB转换为传递函数模型和状态空间模型。2系统的离散、连接、降阶(1)给定连续系统的传递函数,将该连续系统的传递函数用零阶重构器和一阶重构器转换为离散型传递函数,抽样时间T=1秒。(2)该系统与系统分别串联并联负反馈连接,求出组成的新系统的传递函数模型。(3)将串联组成的新系统进行降阶处理,求出降阶后系统的模型,并用plot图形比较降阶前后系统的阶跃响应。要求:将以上过程用MATLAB编程(M文件)实现,运行输出结果。三、实验说明关于系统建模的主要MATLAB函数1建立传递函数模型:tf函数 :格式:sys=tf(num

3、,den)num=bm,bm-1,b0 分子多项式系数den=an,an-1,a0 分母多项式系数2建立状态空间模型:ss函数 :格式:sys=ss(a,b,c,d) %a,b,c,d为状态方程系数矩阵sys=ss(a,b,c,d,T) %产生离散时间状态空间模型3建立零极点模型的函数:zpk格式:sys=zpk(z,p,k)4模型转换函数:tf2ss tf2zp ss2tf ss2zp zp2tf zp2ss %2为to的意思格式:a,b,c,d=tf2ss(num,den)z,p,k=tf2zp(num,den)num,den=ss2tf(a,b,c,d,iu) %iu指定是哪个输入z,p

4、,k=ss2zp(a,b,c,d,iu)num,den=zp2tf(z,p,k)a,b,c,d=zp2ss(z,p,k)5模型的连接串联:sys=series(sys1,sys2)并联:sys=parallel(sys1,sys2)反馈连接:sys=feedback(sys1,sys2,sign)%负反馈时sign可忽略;正反馈时为1。6系统扩展:把若干个子系统组成系统组。格式:sys=append(sys1,sys2,)7模型降阶(1)基于平衡的状态空间实现-balreal格式:sysb=balreal(sys)sysh,g,T,Ti=balreal(sys)sys为原系统,sysb(sys

5、h)为平衡实现系统,g为平衡对角线矩阵,T为状态变换矩阵,Ti是前者的逆矩阵。两种格式的区别:前者只给出原系统的一个平衡的状态空间实现,而后者还给出平衡实现的对角线矩阵g,从中可以看出哪个状态变量该保留,哪个状态变量该删去,从而实现降阶。(2)降阶的实现modred格式:rsys=modred(sys,elim)rsys=modred(sys,elim,mde)rsys=modred(sys,elim,del)强调:这里的sys应是函数balreal()变换的模型,elim为待消去的状态,mde指降阶中保持增益匹配,del 指降阶中不保持增益匹配。8连续系统模型离散化函数:C2DM Conve

6、rsion of continuous LTI systems to iscrete-time.格式:Ad,Bd,Cd,Dd=C2DM(A,B,C,D,Ts,'method')将连续系统状态空间离散系统状态空间'method': 'zoh' 零阶重构器 zero order hold 'foh' 一阶重构器 first order holdNUMd,DENd = C2DM(NUM,DEN,Ts,'method') 将连续系统传递函数离散系统传递函数G(s) = NUM(s)/DEN(s) to G(z) = NUM

7、d(z)/DENd(z).四、实验报告要求1 整理好经过运行并证明是正确的程序,必要的地方加上注释。2 给出实验的结果。实验二 连续系统的数字仿真一、计算机仿真在计算机支持下进行的现代仿真技术称为计算机仿真。仿真不单纯是对模型的实验,它包括建立模型、仿真运行和分析研究仿真结果,即建模实验分析的全过程。MATLAB提供各种用于系统仿真的函数,用户可以通过m 文件调用指令和函数进行系统仿真,也可以通过Simulink工具箱,进行面向系统结构方框图的系统仿真。这两种方式可解决任意复杂系统的动态仿真问题,前者编辑灵活,而后者直观性强,实现可视化编辑。内容:连续系统仿真:数值积分法、离散相似法离散事件系

8、统仿真SIMULINK动态仿真二、基于数值积分法的连续系统仿真1数值积分法的MATLAB函数MATLAB的工具箱提供了各种数值积分方法函数:格式:T,Y=solver(F,TSPAN,Yo,OPTIONS)solver为微分方程的求解函数名。F为系统模型文件名,模型为TSPAN=To Tfinal为积分区间,初值终值,Yo为系统输出初始值,即To时刻的初值列向量;OPTIONS设置积分相对允误RelTol和绝对允误AbsTol,缺省时,RelTol=1e-3, AbsTol=1e-6.输出参数T和Y为列向量,T为时刻向量,Y表示不同时刻的函数值。系统模型函数的编写格式是固定的,如果其格式没有按

9、照要求去编写则将得出错误的求解结果,系统模型函数的引导语句为:function xdot=模型函数名(t,x,附加参数)其中t为时间变量,x为状态变量,xdot为状态变量的导数。如果有附加参数需要传递,则可以列出,中间用逗号分开。solver:ode23 Runge-Kutta法 三阶积分算法、二阶误差估计、变积分步长的低阶算法ode45 Runge-Kutta法,变步长的中等阶次积分算法ode113 变阶的Adams-Bashforth-Moulton,多步长ode15s 改进的Gear法,用于刚性方程的求解。例:求微分方程,先建立一个系统模型文件(m文件函数)function y=dfun

10、(t,x)y=sqrt(x)+5;然后建立m文件mp2-1%mp2-1t,x=ode23('dfun', 0 10 , 1)plot(t,x)结果: t x 2对于高阶常微分方程,,则可以选择一组状态变量,将原高阶微分方程模型变换成以下的一阶微分方程组形式:例:可变换成functiom y=vdp_eq(t,x,mu)y=x(2);-mu*(x(1).2-1).*x(2)-x(1)三、基于离散相似法的连续系统仿真所谓离散相似法是首先将连续系统模型离散化,得到等价的或相似的离散化的模型,然后对相似的离散模型进行仿真计算。根据这一原理,首先应将连续时间系统模型转换为等价的离散时间系

11、统模型。连续系统离散化处理是通过转移矩阵法;采样和信号保持器;变换法(如双线性变换)来实现的。1转移矩阵法的实现:如果连续系统的状态空间模型为:则其离散状态空间模型为:其中 状态转移矩阵(矩阵指数)由此可知,利用状态方程离散化时的主要问题是如何计算、。对于一阶、二阶环节,、可以用解析方法求出来,而对于高阶及多输入多输出系统,就要采用数值解法。MATLAB提供了计算矩阵指数的函数expm,EXPM Matrix exponential.EXPM(X) is the matrix exponential of X. EXPM is computed using a scaling and squa

12、ring algorithm with a Pade approximation.EXPM1, EXPM2 and EXPM3 are alternative methods.例:, 求、。%mp2-2A = 0 1 ; 0 -1; % Define system matricesB = 0 ; 1;syms tau % Define tau to be symbolicphi = expm(A*t) % Symbolically calculate e(A*t)phim1= int(expm(A*(t-tau),tau,0,t)*Bphim=sym2poly(phim1)%将符号运算转换为数

13、值phim1 = -9/10+exp(-1/10) 1-exp(-1/10) 2采样和信号保持器以及双线性变换法的实现:MATLAB还提供了通过采样和信号保持器以及双线性变化法将连续系统模型转换为离散时间系统模型的函数C2D,调用格式为sysd = c2d (sys, Ts, method)其中,sys为线性连续时间系统;Ts为采样时间;sysd为等价的离散时间系统。method为离散化方法,可以选用: 'zoh '为零阶保持器 'foh'为一阶保持器 'tustion'为双线性变换法, 'prewarp'为改进的双线性变换法 &

14、#39;matched'使连续和离散系统具有匹配的DC增益例:连续系统传递函数,采用一阶采样保持器,采样周期为,求其离散化系统模型,并比较离散前后系统阶跃响应。用MATLAB编写程序: %mp2-3sysc = tf ( l -1 , 14 5 , 'td' , 0.35 );%time delaysysd = c2d ( sysc, 0.l, 'foh' )step ( sysc, sysd );运行结果:Transfer function: 离散前后系统阶跃响应比较四、实验内容1 求解方程在不同值的解,=1,;初值, ;=2,;初值, ;=1000,

15、;初值, 。2. 给定系统1/(s+a)k/su x1 x2 y用转移矩阵法仿真,其中k=2;a=1;T=0.01;x1(0)=0.1;x2,仿真时间为0.2 秒,求系统的阶跃响应。采用零阶和一阶采样保持器,求其离散化系统模型,给出系统阶跃响应。采用双线性变换法,求其离散化系统模型,给出系统阶跃响应。实验三 最小二乘法及数据拟合建模的回归分析一、实验目的:1掌握用最小二乘建立回归数学模型。2学习通过几个数据拟合的回归分析来判断曲线(直线)拟合的精度,通过回归分析来判断模型建立是否正确。3应用建立的模型进行预测。二、基本原理和方法1建立回归数学模型在进行建模和仿真分析时,人们经常面临用已知系统实

16、测数据应用数学模型描述对应系统,即对数据进行拟合。拟合的目的是寻找给定的曲线(直线),它在某种准则下最佳地拟合数据。最佳拟合要在什么准则下的最佳?以及用什么样的曲线模型去拟合。常用的拟合方法之一是多项式的最小二乘拟合,其准则是最小误差平方和准则,所用的拟合曲线为多项式。本实验在Matlab平台上,以多项式最小二乘拟合为例,掌握回归模型的建立(包括参数估计和模型建立)和用模型进行预测的方法,并学习回归分析的基本方法。2在MATLAB里,用于求解最小二乘多项式拟合问题的函数如下: polyfit 最小二乘拟合 p=polyfit(x,y,n) 对输入数据y的n阶最小二乘拟合多项式p(x)的系数 Y

17、=polyval(p,x) 求多项式的函数值Y 以下是一个多项式拟合的例子。已知 x=0,1,2,3,4,5,6,7,8,9,10 共11个点(自变量),实测数据y=-0.447,求:2阶的预测方程,并用8阶的预测方程与之比较。x=linspace(0,1,11); y=-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2; p=polyfit(x,y,2) %求2阶的预测方程 的系数 p= b2 b1 b0 z=polyval(p,x); %求预测的y值 (z表示) p2=polyfit(x,y,8) %求8阶的预测方程 z1=po

18、lyval(p2,x); plot(x,y,'om',x,z,':*r'x,z1, ':+b')图中:”0” 代表散点图 “+”代表8阶预测方程 “*”代表2阶预测方程 图1 散点图与2阶预测方程3回归模型的检验回归模型的检验是判断数据拟合的好坏即模型建立的正确与否,为建立模型和应用模型提供支持。在MATLAB平台,用于回归检验的语句如下: b,bint,r,rint,stats=regress(y,X,) 其中, 为回归系数 e 随机误差(均值为0,方差) b:回归系数的估计值 bint:回归系数的置信区间 r:残差 rint:残差的置信区间

19、stats:统计量 R2 F P 用此语句,可以得到回归系数,复相关系数R,方差检验F值,P。rcoplot(r,rint) %打印残差分布图在图中,若残差的置信区间不包含零点,则视为异常点,将其剔除后重新计算。b=leastsq(函数名,b0) % 非线性最小二乘法拟合, b0为初始值s=sqrt(sum(函数名.* 函数名)./(n-2) %计算剩余标准差s=sqrt(sum(y-Y).2)./(n-2) %计算剩余标准差4预测值: 用经过检验的数学模型即可预测数据。即把x代入回归方程对y进行估计,该估计值为。以下用一个例子说明回归模型的检验与预测: 有人研究了黏虫孵化历期平均温度(x,o

20、C)与历期天数(y,天)之间关系,试验资料列入下表,求直线回归方程,并进行检验。x,历期平均温度oC 先作出(xi,yi)的散点图 14.7 15.6 16.8 17.1 18.8 19.5 20.4'y=30.1 17.3 16.7 13.6 11.9 10.7 8.3 6.7'plot(x,y,'r+') 图2 历期平均温度(x,oC)与历期天数(y,天)的散点图从图中可见y与x基本,因此用一元线性回归。X=ones(8,1),x;b,bint,r,rint,stats=regress(y,X);b,bint,stats,rcoplot(r,rint)运行结

21、果: 得到以下结果:复相关系数的平方 R2374, 则R=>0.8,F=89.8675 存在极显著的直线回归关系。 p<10-4,因此此回归模型y接受。oC时,孵化历期天数为多少天?(天) 图三 残差分布图 (全部观测点)观察图中的残差分布,除第一点外,其余残差的置信区间均包含零点,第一个点应视为异常点,将其剔除后重新计算,可得:图三 残差分布图 (除掉第一个异常点观测点) oC时,孵化历期天数 显然,此估计值应更加符合真实数据。三、实验内容:1 用给定的多项式 产生一组数据,再在yi上添加随机干扰,然后用和添加了随机干扰的yi作3次多项式拟合,与原系数比较。如果作2次或4次多项式

22、拟合,结果如何?2给定数据(xi,yi)见下表画出散点图观察二者的关系,试建立合适的回归模型:直线回归方程;二次曲线;对数曲线;线性化的对数曲线等.并作回归分析,得到最佳。得到的最佳回归方程做出散点图和曲线。xi23457810yixi111415151819yi实验四 Simulink动态仿真SIMULINK是MATLAB重要软件包,用于对动态系统建模和仿真,它适用于连续系统和离散系统,也适用线性系统和非线性系统。它采用系统模块直观地描述系统典型环节,因此可十分方便地建立系统模型而不需要花较多时间编程。正由于这些特点,SIMULINK广泛流行,被认为是最受欢迎的仿真软件。一、SIMULINK

23、的特点启动:在命令窗口输入Simulink或单击“simulink library Browser”按钮或使用菜单命令filenewmodel,均可打开“simulink library Browser”窗口,里面有许多Simulink基本模块,用户可以直接调用这些模块。1支持图形用户界面。在命令窗口键入“thermo”(这是一个房间热力学仿真演示程序)。里面包含许多模块,模块之间用直线相连,组成模型,模型造好后,可以仿真运行,等待结果。(单击start按钮或菜单命令simulinkstart,然后单击thermo plots模块,查看仿真结果室内温度、室外温度和热量曲线,这种和实际示波器输出

24、相似的图形化显示,给用户一个很友好的界面)。2层次性 双击“house”模块,出现“thermo/house”窗口,表示house模块是由窗口右边所示的一些模块连接而成。像house这样由由几个相互关联的模块组合而成的模块在simulink中称为子系统(后面讲)。而这种一个模块又由许多模块组成的特性,这是simulink的层次性。为了和子系统相区别,这里把模型本身称为模型的顶层系统。层次性的好处是建立的模型在结构上非常清晰整齐,一目了然,更重要的是,这一特性使得用户可以选择是采用从上而下建模,还是从下而上建模。因此在建模时一定要有层次。 模型浏览器可以用来观看模型的层次结构。(菜单view/m

25、odel browser)。2 封装子系统功能用户自定义该子系统的图表和设置参数对话框。House房屋形状的图标就是封装后的结果。还可以做其他尝试,体会simulink的特点。如:把温度设为80(预期的室内温度),观察仿真结果的变化。标签为daily temperature variation的正弦模块是设置日温度变化,试改变幅度值参数,观察仿真结果的变化。模块库(simulink library)是存放simulink模块的地方,可以在浏览器窗口中选择所需的模块。Simulink这一标题必定会有,是基本模块库,其他例如通信模块库(communication blockset),数字信号处理(

26、DSP blockset)等,要安装了相应的工具箱才会有。可以单击每个标题前的+号,查看库里的内容。Simulink可分为continuous, discrete, function&table(函数和平台), math, nonlinear, signal&system, sinks(接收器), sources(源)等子库。Sinks里面是一些信号的接收器,如scope(示波器),display(显示器),XY Graph(XY图形).二创建一个简单的模型示范模型的功能是对一个正弦信号进行积分,并显示积分的结果。图4-1 mp1模型在模型结构已设计好的前提下,用SIMULIN

27、K建立模型的过程可以概括为:在SIMULINK的模块库中找到所需的模块,并把它们拖曳到模型窗口,将这些模块排列好,然后用直线将各个模块连接起来。步骤如下:(1) 启动SIMULINK模块库浏览器窗口;(2) 新建一个空白模型:单击库浏览器工具栏上的空白按钮。在SIMULINK里,模型是保存在模型文件里的,后缀名为.mdl.(3) 在模块库浏览器窗口找到所需的模块,并将模块拖曳到空白的模型窗口中的适当位置(均在SIMULINK库)。正弦发生器(source子库的sine wave)、积分器(continuous子库的integrator)、复用器(signals & systems子库的

28、MUX)、示波器(sinks子库的scope)。(4) 用直线将模块连接起来,注意一个模块的输入端只能和另一个模块的输出端连接。(5) 保存,*.mdl。(6) 运行(simulation/start)、查看结果(双击scope)。修改参数,查看运行的结果。三基本操作1对模块操作:任务操作选择一个模块单击鼠标选择多个模块Shift+单击鼠标或者用方框包含选择对象移动模块拖动模块复制模块Ctrl+鼠标左键,然后拖动鼠标在模块间连接鼠标左键断开模块间连接Shift+拖动2建立模型注释:在模型空白处双击鼠标,然后输入注释文字。 删除注释:shift+选中注释,然后按删除键。四子系统创建及封装对于一个

29、复杂系统,可以创建一些子系统,每个子系统完成系统的部分特定功能,使复杂系统模型框图更加清晰,一目了然。创建子系统有两种途径(1)增加一个子系统模块到你的模型;(2)组合已存在的模块建立子系统。1通过子系统模块来建立子系统下面以最简单的子系统为例说明子系统模块创建一般方法和步骤。 一个子系统方程表示为 y = mx + b式中,x为输入,y为输出,m, b为常数。要求用户能通过对话框方便修改m, b值。 步骤:(1)将Subsystem模块复制到模型窗口,它的位置在simulink/signals & systems;(2)双击Subsystem模型,打开子系统编辑窗口;(3)在Subs

30、ystem窗口下,建立子系统模型。这里参数m取名为Slope,参数b取名为Intercept。子系统输入和输出要用输入模块In和输出模块Out。(4)关闭子系统窗口,保存模型。图4-2 子系统模型2组合已存在的模块建立子系统(1) 选取要组合成子系统的模块:正确的方法是用方框包含待选择对象。(2) 用edit/creat subsystem命令产生子系统。3子系统封装利用SIMULINK的封装(MASK)功能,用户可以创建一个SIMULINK模块库中没有的子系统(Subsystem)模块,并建立模块对话框的图标。这种功能使SIMULINK功能不断扩展并能满足各学科领域的计算机仿真问题。同时,也可使复杂系统的框图模型得到简化。步骤:(1)建立子系统。如果不封装,双击子系统会看到子系统的内部结构。为了改变m和b两个参数,必须分别打开Gain和Constant的参数对话框逐个设置,如果子系统内的模块很多。这项工作是十分烦琐的。封装可以简化这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论