《基于MATLABSimulink的建模与仿真》由会员分享,可在线阅读,更多相关《基于MATLABSimulink的建模与仿真(100页珍藏版)》请在金锄头文库上搜索。
1、计算机仿真技术第五讲 基于MATLAB/Simulink 的建模与仿真 u MATLAB软件简介u MATLAB仿真实例u 什么是Simulink?u Simulink模块库简介u Simulink模型的建立方法u Simulink建模与仿真举例u 小结u MATLAB软件简介?MATLAB是一门计算机编程语言,是一种科学计算软件,取名来源于Matrix Laboratory,本意是专门以矩阵 的方式来处理计算机数据 .MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,被广泛 应用在科学计算,信息处理,控制系统等领域的分析,仿 真和设计工作。MATLAB的功能包括:数值
2、分析,数值和符号计算,工程和科学绘图,通讯和控制系统的设计与仿真, 数字图像与信号处理,财务与金融工程等。u MATLAB软件简介?MATLAB软件的典型应用领域: v科学研究; v工程技术应用研究 vCAI(Computer Aided Instruct) v数学实验(Mathematical Experiment) v数学建模(Mathematical Modeling)clear删除工作空间中的所有变量!系统不会要求你确认这个命令。所有变量都被清除且不能再恢复。 对于简单的问题,在MATLAB提示符下输入命令是快速有效的。然而当命令数增加或希望改变一个或几个变量 的值,然后重新执行一系列
3、命令时,在MATLAB提示符处键入命令就非常麻烦了。对这个问题MATLAB提供了一种逻辑解决方案。它允许用户把MATLAB命令放在一个简单的文本文件中,然后告诉MATLAB打开文件并执行命令,如同在MATLAB提示符处键入命令一样。这些文件被称为脚本文件或简单地称为M文件。M文件是指脚本文件以扩展名.m结尾。u MATLAB软件简介?MATLAB提供三种控制流结构 的语句: For-end循环 While-end循环 If-Else-End结构u MATLAB软件简介?For-end循环的基本作用是以固定的和预定的次数重复一组特定的命令。一般形式是:for n=循环控制量的范围commands
4、endu MATLAB软件简介?说明:在for和end语句之间的命令串 commands按矩阵(array)中的每一列执行 一次。在每一次迭代中,n被指定为循环控 制量的范围内的下一列。例如: for n=1:10 x(n)=sin(n*pi/10); end 这个循环体的作用是:对n等于1到10,求所 有语句的值,直到下一个end语句。第1次 通过For循环n=1,第2次,n=2,如此继续 ,直到n=10。在n=10以后,For循环结束, 然后求end语句后面的任何命令值qFor循环不能用For循环内重新赋值循环变 量n来终止。 q在For循环中循环控制量的范围可以是任 何有效的MATLAB
5、矩阵。比如 data=11 9 45 6; 7 16 -1 5; for n=datax=n(1)-n(2) end 这时程序的输出有四个数值,分别是矩阵 data的两列相减的结果 x = 4 x = -7 x = 46 x = 1For循环可按需要嵌套,即For循环体内的命 令组中可以出现另一个For循环体,这体 现了For循环体也是命令组。比如 for n=1:5for m=5:-1:1A(n,m)=n2+m2;End end While-end循环以不定的次数求一组语句的 值。Whil-end 循环的一般形式是: while expression(控制表达式) commands end
6、只要在控制表达式(expression)里的所有 元素为真,就执行While和end语句之间的 命令串(commands)。 u MATLAB软件简介?说明:控制表达式的值未必是一个标量值,矩阵值也同样有效。在矩阵情况下,所得到矩阵的所有元素必须都为真。具体示例:num=0;EPS=1;while(1+EPS)1EPS=EPS/2;num=num+1;end这段MATLAB代码最后在num=53时停止。 IF-ELSE-END结构提供有条件地执行一些特定 的命令序列的方式。最简单的IF-ELSE-END结 构是: if expression(条件控制表达式) commands end 如果在条
7、件控制表达式(expression)中的所有 元素为真(非零),那么就执行if和end语句之 间的命令串(commands)。在表达式包含有几 个逻辑表达式时,即使前一个表达式决定了表 达式的最后逻辑状态,仍要计算所有的子表达 式。u MATLAB软件简介?一般的有两个选择的IF-ELSE-END结构是 :if expression(条件控制表达式)commands evaluated if Trueelsecommands evaluated if Trueend在这里,如果条件控制表达式(expression )为真,则执行第1组命令;如果表达式 是假,则执行第2组命令。 有三个或更多选择
8、时的IF-ELSE-END结构的形 式: if expression1 commands evaluated-if expression1 is True elseif expression2 commands evaluated-if expression2 is True elseif expression3 commands evaluated-if expression3 is True elseif else commands evaluatedif on other expression is True end 最后这种有三个以上选择的IF-ELSE-END形式 ,依次检查各表达式
9、,只执行第一个表达式为 真的命令串,接下来的关系表达式不检验,跳 过其余的IF-ELSE-END结构。最后的else命令 可有可无。break是一种特殊的控制结构,基本作用是无条件跳出临近的循环体,即结束For循环和While循环的执行。u MATLAB软件简介?学习和使用常用软 件MATLAB的一些 基本语句和功能来 验证或观察函数的 变化,实现函数的 可视化计算u MATLAB软件简介?u MATLAB仿真举例设系统方程,y(0)=1试用Euler法求其数值解(取步长h=0.1,0t1)试编写matlab程序求其数值解。设系统方程,y(0)=1试用Euler法求其数值解(取步长h=0.1,
10、0t1)试编写matlab程序求其数值解。Euler迭代公式:yn+1=yn-0.1yn2u MATLAB仿真举例Euler迭代公式:yn+1=yn-0.1yn2,y(0)=1(取步长h=0.1,0t1)u MATLAB仿真举例Euler迭代公式:yn+1=yn-0.1yn2,y(0)=1t=0:0.1:1; length=size(t,1); y=zeros(size(t); y(1)=1; for n=1:1:length-1 y(n+1)=y(n)-0.1*y(n)2 end plot(t,y)(取步长h=0.1,0t1)u MATLAB仿真举例运行结果:y =1.00000.90000
11、.81900.75190.69540.64700.60520.56850.53620.50750.4817u MATLAB仿真举例u 作业设系统方程,y(0)=1试用二阶龙格库塔法求其数值解(取步长h=0.1,0t1)试编写matlab程序求其数值解。二阶龙格库塔法迭代公式:请在第二次实验时 上机验证结果。Simulink是MATLAB提供的实现动态系统建模和仿真的一个软件包,它让用户把精力从编程转向模型的构造。Simulink一个很大的优点是为用户省去了许多重复的代码编写工作。 Simulink 支持线性,非线性系统,连续系统,离散系统,或者混合系统的建模与仿真。同时它也支持具有不同部分拥有
12、不同采样率的多种采样速度的系统仿真。Simulink的启动方式有两种:(1) 在工具栏点击Simulink图标;(2)在Command Window中输入: Simulinku 什么是Simulink?u Simulink模块库简介SIMILINK模块库按功能进行分类:连续模块、离散模块、查表模块、数学模块、非线性模块、信号通路模块、接收器模块、输入源模块、其他常用方块组及工具箱、特别模块。u Simulink模块库简介Derivative:输入信号微分Integrator:积分器State-Space:线性状态空间系统模型Transfer-Fcn:线性传递函数模型Zero-Pole:以零极点
13、表示的传递函数模型Memory:存储上一时刻的状态值Transport Delay:输入信号延时 一个给定时间再输出Variable Transport Delay:输入 信号延时一个可变时间再输出 连续模块(Continuous)Zero-Order Hold:零阶采样保持器Unit Delay:一个采样周期的延时Discrete-time Integrator:离散时间积分器Discrete State-Space:离散状态空间系统模型Discrete Filter:离散滤波器Discrete Transfer-Fcn:离散传递函数模型Discrete Zero-Pole:以零极点表示的离
14、散传递函数模型First-Order Hold:一阶采样保持器 离散模块(Discrete)Look-Up Table:建立输入信号的查询表(线性峰值匹配)Look-Up Table(2-D):建立两个输入信号的查询表(线性峰值匹配)Fcn:用户自定义的函数(表达式)MATLAB Fcn:利用MATLAB的现有函数S-Function:调用自编的S函数的程序 Look-up Table(查表模块)User-defined function(用户定义函数模块 )Sum:加减运算Product:模块输入的乘除运算Dot Product:点乘运算Gain:比例运算Math Function:包括指数
15、函数、对 数函数、求平方等常用数学函数Trigonometric Function:三角函数 ,包括正弦、余弦、正切等MinMax:最小值或最大值运算 Math operations(数学模块 )Abs:取绝对值Sign:给出符号函数Rounding Function 圆整函数Combinatorial Logic:建立真值表Logical Operator:逻辑运算Relational Operator:关系运算Complex to Magnitude-Angle:由复数输入转为幅值和相角输出Complex to Real-Imag:由复数输入转为实部和虚部输出Magnitude-Angle
16、 to Complex:由幅值和相角输入合成复数输出Real-Imag to Complex:由实部和虚部输入合成复数输出Rate Limit: 变化速率限制Saturation:饱和输出,让输出超过某一值时能够饱和。Quantizer:离散化Blacklash:滞环或间隙Dead Zone:死区Relay:滞环继电器Switch:切换开关Manual Switch:手动选择开关Coulomb & Viscous Friction 库仑和粘滞摩擦 Discontinuous(非线性模块)Mux:将多个单一输入转化为 一个复合输出。Demux:将一个复合输入转化 为多个单一输出。 Signal Routing(信号通路模块 )Scope:示波器,显示信号曲线 。XY Graph:显示二维X-Y图形 。Out1:输出端口Display:显示数值To Workspace:将输出写入 MATLAB的工作空间。T