matlab中simulink使用技巧

2020-04-14 02:17

参加数学建模已经很多年了,算来其中所学多源于网络上各位前辈的无私奉献。饮水当思源,承志以后继。故而添加此分类,用于交流我这些年的心得。心得分为软件和算法两类,软件可能会包括matlab/simulink,maple,mathematica,spss(被收购成了pasw),ansys,ansoft/maxwell,comsol,pscad,tc,算法可能有GA,NNs。当然,受到专业研究所限,很多时候无法得心应手,献丑于此,只为提醒自己要做到更好。

恰巧,我在自己学校的bbs上申请了相关版面的版主职位,也希望自己能整理出些基础教学,以备后生晚辈们入门。暂时的想法是,先说些simulink的相关知识,因为工科学生最常用的就是这个仿真环境,而其他软件又恰好对他保留了接口,可以说这个软件成为了算法的中心。以后将陆续说些simulink不能完成的任务,并推荐能完成这些任务的工具。开始吧——

simulink可以视作matlab下的工具库,matlab版本不断更新,simulink也不断更新,当前版本为matlab2011b。

首先要明确,simulink的作用为求解常微分方程(组)!且这是他唯一的作用!也就是说偏微分方程在simulink中是无法求解的,需要其他工具或软件作为接口,或者你够牛的,就直接写个有限元的程序。当然,常微分方程是不够的,为适应数字控制电路等离散系统,simulink可以求解离散的常微分方程,也就是差分方程,略微麻烦,不做重点介绍。 然后来看看simulink求解常微分方程(组)的方法,首先要把方程写成如下形式: y1'=f1(y1,y2,...yn,t) y2'=f2(y1,y2...yn,t) ...

yn'=fn(y1,y2...yn,t)

至于如何写成这种形式,就是降阶了,线性代数里说的很多了,比如y1=y;y2=y1'=y';y3=y2'=y''...需要注意的是,等号右侧不能有导数项,如果等号右边出现了导数项,则说明这个方程需要积分一次。等号右侧可以有积分项,但不推荐出现,可以将出现的积分项作为新的变量,添加一个方程。 有了方程后,就可以连接成如图的形式:

其中的1/s表示积分环节,其输入为等号的左侧,输出为等号左侧的积分,subsystem表示等号右侧的搭建,此处只画出一个以示意。因此整个方程求解过程的主要工作在于subsystem的搭建,其中可能用到的运算符号在simulink的第一个库中都能找到,常用的如:加减乘除,矩阵乘法、转置、求逆,三角函数,分段函数,逻辑判断。以后会介绍这些函数的具体用法。

最后一步就是设置仿真的误差和算法了,ctrl+e,或者菜单栏上可以找到sim下con par,其中的ode等等表示算法,如ode45是龙哥库塔四阶(好像是吧,记不清)。还可以设置变步长和定步长,误差容限等等,虽然数学上认为这些算法的计算精度会差很多(一阶和四阶的差距就是步长的立方啊),但实际中,感觉并不大,小步长的欧拉算法似乎也很可靠。

先说下模块怎么找,启动simulink的截面后,会有很多库,最常用的当然是第一个名为simulink的库了,里面的模块基本都要记熟的,可以直接拖拽放到工作界面。如果是陌生的模块,可以打字搜索,如图所示,然后再拖拽。除了simulink库以外,另一个常用的库可能就是你的专业了,比如我学ee的,一般常用的就是simpower了。

然后继续上次说的,simulink的唯一功能就是求解常微分方程,且都要写出y'=的形式,等号右边通常会出现哪些计算符号呢?就看看一些常用的吧,如图所示。第一行基本

是每个模块必备的,第二行是加减乘除,第三行是常用函数。

constant:即常数,输出一个常数,双击可修改该值。

socpe:昵称示波器,可以用来看任一条线上的输出(当然最好是数,别是向量或者矩阵,可能会有麻烦)

intergrator:积分器,这个很熟悉了吧,每个方程写出标准形式后,都要这个的 clock:时间,在求解方程时当做自变量

第二行的各位:就是加减乘除了,都支持矩阵或者向量,矩阵除法就是求逆啦~如果用矩阵或向量形式时,乘除法记得要双击修改下

abs:绝对值

eu:不只是指数函数哦~双击可以修改为平方开根号等等

sin:不只是sin哦,还有cos,arccos等等,记得是弧度制哦~

下面来个简单的例子,比如求解y'=y-x,学过数学的都知道用欧拉方程去求,算个特征根,然后代入初值条件,balabala一算,出来结果了。在simulink里可简单多了,初值条件可以双击intergrator,里面有初值选项,这里默认为0,求解自变量从0到10的解,用示波器观察y,运行后得到结果,如图所示。

如果y'=的表达式复杂些,比如下图中的那个,呵呵,我都不知道该怎么写这个式子了,感觉太长了~不过simulink依然可以求解哦~~~

会这些以后,很多问题都可以解决了,尤其是高等数学里求解微分方程那章的东西,都轻而易举。不过别以为这些就够用了,至少有两个问题没有解决:一个是实际问题中多有分段函数,分段函数又牵涉逻辑判断;另一个是求解的精度,你知道误差是多大么?这些问题留着以后再介绍吧~

上两次介绍了simulink求解常微分方程的思路,将全部问题归结为y'=等号右侧的搭建,并通过最常用的一些模块弄了一些例子。按照约定,这次会介绍等号右侧含有分段函数的情况。先看下要用到的模块:

第一行是逻辑判断模块,因为分段函数的结构是:表达式1,条件1;表达式2,条件2...所以逻辑判断模块对应条件。这些模块的意思看名字就知道,双击后,可以把小于等于改成大于,等于,不等于等等,与运算可以有非,或,异或等等。第二行是一个时能子系统,用法很多,常被初学者成为高级模块,其实远没那么神秘,直接拖出这个模块,不加任何修改,就能用来搭建分段函数。第三行是两个常用模块,双击后可以修改输入的个数。

先介绍个数学小技巧,这也是分段函数搭建的理论基础,说是理论基础,其实中学生应该就能理解。看这个表达式就能明白:y=y1 if con1;y2 if con2;y3 others=y1*(if(con1))+y2*(if(con2))+y3*(if(con3)),变形后的等式,由加法、乘法、if三个部分组成,所以才会在介绍模块的时候特别提到加法和乘法两个模块。如果还不明白,可以看个例子,y'=t if t<1;2*t if 1<=t<2;0 others=t*(if(t<1))+2*t*(if(t>=1 and t<2))+0*(if(t>=2)),特别说明,通常t>=0。如下图所示:

其中与运算,乘法,加法和表达式完全一致,没有半分偷懒。因此可知分段函数的表达,是拆成分段表达式和分段条件两部分的,前者用些常用模块,前两次已经交代过,后者就是与或非。当然,除了以上方法,还有些偷懒的,比如下图中,对(表达式=t,条件=t>0 and t<1)这个分段的搭建:

右上的方法,是最基本的,表达式乘以条件式。左上则是省略了与运算,直接用乘法代替,其实和逻辑运算一致。最下方的方法则用到了使能子系统。至于这三种搭建的结构在运算上是否完全等效,我无法得知,因为simulink转换成代码形式还有很多东西要设置,但对于工程应用,这些已经足够了。

下一次会介绍矩阵的运算,尤其是如何从元素到矩阵,从向量取元素,并简介下sim-con的设置,及其对运算时间的影响。

很多时候都要在matlab画图的时候添加一些公式符号之类的,有一些特殊的字符并不能直接从键盘上输入,比如希腊字母等等。但是有想用,因为这样使图看起来漂亮而且容易理解。

例如:我想输入摄氏度的符号,怎么办咧?

也许你突然想到,摄氏度不就是一个小圆圈加一个大写的C么。

于是就用’T=25^oC’来表示了,一看,多少还算是那么回事,但怎么看怎么有点别扭。 因为o作为上标的时候它不是一个正真的圆圈,最多是个椭圆,并且它体积太大了。 好吧,既然如此,那就用中文输入法打个句号“。”上去,即’T=25^。C’ 再看的时候,圆圈到是圆圈了,但还是别扭呢?

那是因为在编码中,中文句号占了两个字符的位置,所以圆圈和C的位置拉得太远,根本看不下去。

行了,告诉你吧 正确的表示方法为:’T=25circC’,这样就好看多了!

下面给出Matlab中下标及希腊字母的使用方法,还有更多的使用方法可以参考matlab帮助

文档中的Text Properties: 下标用 _(下划线) 上标用^ (尖号)

希腊字母等特殊字符用 加拼音如 α alpha β beta γ gamma ζ theta Θ Theta Г Gamma δ delta Δ Delta ξ xi Ξ Xi ε elta ε epsilong

δ zeta μ miu υ nu η tau λ lamda Λ Lamda π pi Π Pi ζ sigma Σ Sigma θ phi Φ Phi ψ psi Ψ Psi χ chi

ω ommiga Ω Ommiga < leq > geq

不等于 neq << ll >> gg 正负 pm

左箭头 leftarrow 右箭头 rightarrow 上箭头 uparrow

上圆圈(度数) circ

例 text(2,3,’alpha_2^beta’)

注: 可用{}把须放在一起的括起来


matlab中simulink使用技巧.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:民爆物品爆炸事故专项应急预案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: