当前位置:文档之家› Matlab Simulink 仿真步骤

Matlab Simulink 仿真步骤

MATLAB基础与应用简明教程张明等编著北京航空航天大学出版社(2001.01)MATLAB软件环境是美国New Mexico大学的Cleve Moler博士首创的,全名为MATrix LABoratory(矩阵实验室)。

它建立在20世纪七八十年代流行的LINPACK(线性代数计算)和ESPACK(特征值计算)软件包的基础上。

LINPACK和ESPACK软件包是从Fortran语言开始编写的,后来改写为C语言,改造过程中较为复杂,使用不便。

MA TLAB是随着Windows环境的发展而迅速发展起来的。

它充分利用了Windows环境下的交互性、多任务功能语言,使得矩阵计算、数值运算变得极为简单。

MA TLAB语言是一种更为抽象的高级计算机语言,既有与C语言等同的一面,又更为接近人的抽象思维,便于学习和编程。

同时,它具有很好的开放性,用户可以根据自己的需求,利用MA TLAB提供的基本工具,灵活地编制和开发自己的程序,开创新的应用。

本书重点介绍了MA TLAB的矩阵运算、符号运算、图形功能、控制系统分析与设计、SimuLink仿真等方面的内容。

Chap1 MATLAB入门与基本运算本章介绍MATLAB的基本概念,包括工作空间;目录、路径和文件的管理方式;帮助和例题演示功能等。

重点介绍矩阵、数组和函数的运算规则、命令形式,并列举了可能得到的结果。

由于MA TLAB的符号工具箱是一个重要分支,其强大的运算功能在科技领域有特殊的帮助作用。

1.1 MATLAB环境与文件管理1.2 工作空间与变量管理1.2.1 建立数据x1=[0.2 1.11 3]; y1=[1 2 3;4 5 6]建立一维数组x1和二维矩阵y1。

分号“;”表示不显示定义的数据。

MATLAB还提供了一些简洁方式,能有规律地产生数组:xx=1:10 %xx从1到10,间隔为1xx=-2:0.5:1 %xx从-2到1,间隔为0.5linespace命令等距离产生数组,logspace在对数空间中等距离产生数组。

对于这一类命令,只要给出数组的两端数据和维数就可以了。

xx=linespace(d1,d2,n) %表示xx从d1到d2等距离取n个点xx=logspace(d1,d2,n) %表明xx从10d1到10d2等距离取n个点1.2.2 who和whos命令who: 查看工作空间中有哪些变量名whos: 了解这些变量的具体细节1.2.3 exist命令查询当前的工作空间内是否存在一个变量,可以调用exist()函数来完成。

调用格式:i=exist(…A‟);式中,A为要查询的变量名。

返回的值i表示A存在的形式:i=1 表示当前工作空间内存在一个变量名为A的矩阵;i=2 表示存在一个名为A.m的文件;i=3 表示MATLAB的工作路径下存在一个名为A.mex的文件;i=4 表示存在一个编译好的名为A.mdl的SimuLink的文件;i=5 表示存在一个内部的MATLAB函数A();i=0 表示不存在和A有关的变量和文件1.2.4 clear命令删除一些不再使用的变量。

变量之间用空格分开,不能加逗号。

1.2.5 format命令1.help命令help sqrt: 了解求平方根命令的功能和使用方式。

2 lookfor命令通过搜索所有MATLAB help标题,以及MATLAB搜索路径中M文件的第一行,返回包含所指定关键词的那些项。

Lookfor riccati: 得到所有解riccati方程的命令和解释语句3. 菜单驱动的帮助1.3 变量、数据与函数1.3.1 变量变量名必须是不含空格的单个词,其命名规则如下:变量名区分大小写;变量名最多不超过19个字符;必须以字母打头,之后可以是任意字母、数字或下划线。

标点符号在MATLAB中具有特殊含义,所以变量名中不允许使用标点符号。

1.3.2 注释和标点百分号后所有的文字为注释。

多条命令可以放在同一行,中间用逗号或分号隔开。

逗号要求显示结果,分号禁止显示结果。

1.3.3 复数表示用,i j 和()sqrt x (x 是任意整数、实数)表示。

复数和数学运算可以写成与实数相同的形式。

MATLAB 还可以用real,imag,abs,angle 命令来表示一个复数的实部、虚部、幅值和相角。

1.3.41.4 数据的输入与输出1.4.1 save和load命令(1) save: 以二进制格式将所有变量存入到matlab.mat文件中;(2) save data: 以二进制格式将所有变量存入到data.mat文件中;(3) save data x y z: 以二进制格式将变量x,y,z存入到data.mat文件中1.4.2 低级文件输入输出MATLAB提供了基于C语言的低级文件I/O命令,可以读写任意格式文件。

1.5 数组与矩阵运算由于数组可以定义为只有一行(或一列)的矩阵,因此,所有有关矩阵的运算可以用于数组运算。

1.5.1 矩阵表示与块操作1. 矩阵表达式MATLAB的数组与矩阵用[ ]表示,程序可以自行解读矩阵的行、列标志和元素。

定义矩阵的原则是:矩阵元素间用空格或逗号隔开,行用分号隔开。

如:a=[1 2 3;4 5 6],b=[7 8 9]2. 矩阵转置矩阵的转置(行、列互换)用'A表示。

若矩阵为复数矩阵,求转置时首先对矩阵元素进行转置,然后再逐项求取其共轭数值,这种转置方式双称为Hermit转置。

若x=[5.0000+1.0000i -2.0000+1.000i; 4.0000 +3.0000i]则xx=x‟=[5.0000-1.0000i 4.0000; -2.0000-1.0000i 0-3.0000i]3. 矩阵大小size: 格式为:[n,m]=size(A)。

n和m分别为A矩阵的行数与列数。

length: 格式为:n=length(A)。

n为A数组的元素个数或A矩阵的行、列数之最大值。

该函数等效于max(size(A))。

find命令:进行特殊要求的矩阵元素的定位。

如[i,j]=find(A>3)指出矩阵元素中大于3的元素的行、列位置。

4. 矩阵的块操作MATLAB提供了很多简便、智能的方式,可以对矩阵进行元素更改、插入子块、提取子块、重排子块、扩大维数等操作。

冒号“:”表示“全部”。

a(1,:)=b %将a的第1行中所有元素用b的元素替代。

a(:,:)=1 %将a的所有元素设为1。

a(2,3)=10 %第2行第3列元素等于10。

MATLAB已定义的矩阵的维数可以扩大,但不能缩小,除非利用clear命令删除该矩阵。

如果输入的同名矩阵的维数小于矩阵维数,MATLAB认为是原矩阵矩阵修改了部分元素或子块。

增加矩阵的维数时,可以只给出非零元素,MATLAB 自动将未定义元素设为0。

5. 矩阵的翻转操作矩阵上下翻转:flipud 命令将n 行矩阵作上下翻转,将A 的行按照n....1的顺序重新排列,A 的列保持不变。

如a=[1 2 3; 4 5 6; 7 8 9; 10 11 12],则b=flipud(a)=[10 11 12; 7 8 9; 4 5 6; 1 2 3]矩阵左右翻转:fliplr 命令将m 列矩阵A 作左右翻转,将A 的列按照m...1的顺序重新排列,A 的行保持不变。

如c=fliplr(a)=[3 2 1; 6 5 4; 9 8 7; 12 11 10]矩阵逆时针90°旋转:如d=rot90(a)=[3 6 9 12; 2 5 8 11; 1 4 7 10]1.5.2 矩阵运算矩阵运算包括矩阵与标量、矩阵与矩阵的运算;矩阵函数和稀疏矩阵应用等。

1. 矩阵与标量的运算运算包括+、-、×、÷和乘方等运算。

矩阵与标量运算完成矩阵的每个元素对该标量的运算。

MATLAB 用符号“^”表示乘方。

求矩阵乘方时要求矩阵为方矩阵。

已知矩阵: b=[2 4; 1 5],则b^2=[8 28; 7 29](其平方为b×b );b^(-1)=[0.8333 -0.6667; -0.1667, 0.3333](实际是求b 的逆矩阵)p=b^(0.2)=[1.0862 0.3448; 0.0862 1.3448](将b 矩阵开5次方,即b=p 5) 2. 矩阵与矩阵的运算矩阵加减法运算:矩阵A 和B 的维数完全相同时,可以进行矩阵加减法运算。

它会自动地使得A 和B 矩阵的相应元素相加减。

如果A 和B 维数不相等,则给出错误信息。

矩阵乘法运算:两个矩阵A,B 的维数相容时(A 的列数等于B 的行数),可以进行C=A×B 的运算矩阵除法运算:包括左除和右除两种,其中: 左除:A\B=A -1B ,A 为方矩阵 右除:A/B=AB -1,B 为方矩阵矩阵的除法运算实际上是求AX=B 的解的过程。

当A 为非奇异矩阵时,结果是最小二乘解,即矩阵除法可找到使AX B -误差绝对值最小的X 。

矩阵的点运算:两个矩阵之间的点运算是该矩阵对应元素的直接运算,如C=A. ×B 表示A 和B 矩阵的相应元素之间直接进行乘法运算,然后将结果赋给C 。

点乘积运算要求A 和B 的维数相同。

这种点乘积又称为Hadamard 乘积。

矩阵求幂:包括矩阵与常数和矩阵与矩阵的幂运算。

3.^3[]ij a a =: a 矩阵的3次方—A 矩阵的每个元素的3次方形成的新矩阵;3.^[3]ij aa =: 3的a 次方—新矩阵的每个元素都是以3为底,以A 矩阵的对应元素为幂指数,形成的新矩阵; .^[]ijb ija b a =: a 的b 次方—新矩阵的每个元素都以A 的元素为底,以B 的对应元素为幂指数。

1.5.3 矩阵函数MATLAB 定义了一些特殊矩阵,不必一一赋值。

特殊矩阵定义见下表:MATLAB 还提供了很多用于求解线性代数数值问题的矩阵函数,见下表:1.5.4 稀疏矩阵稀疏矩阵是一个阶数很高,只有极小部分元素非零的矩阵。

a=speye(5) %建立5阶单位稀疏矩阵sparse(i,j,s)命令可以产生最大行数为i ,最大列数为j ,最后一个元素为s 的稀疏矩阵。

aa=sparse(10,10,1) %建立10×10阶稀疏矩阵,最后一个元素为1 ap=sparse(1:5,6,0.5) %建立5×6稀疏矩阵,第6列元素为0.5 as=sparse(1:5,1:5,0.5) %建立5×5稀疏矩阵,对角线元素为0.5 1.6 M 函数与M 文件全局变量:global a b c 1.7 多项式运算多项式用一个向量表示,多项式的系数降幂排列。

如多项式43()256p x x x x =+-+在MATLAB 工作空间输入为:p=[1 2 0 -5 6] 1.7.1 求根及其求逆运算roots 命令可以求解多项式p 的根,求出的根按列向量存储,如rr=roots(p)。

相关主题