《matlab简明教程.ppt》由会员分享,可在线阅读,更多相关《matlab简明教程.ppt(84页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一部分 Matlab语言概述1Matlab与其它数学软件比较nMATLABMATLAB:MATLAB名字是由MATrix和LABoratory两个词的前三个字母组合而成的,意为“矩阵实验室”。是一个高性能的科技计算软件,在数值计算方面独占鳌头,广泛应用于数学计算、建模、仿真和数据分析处理及工程作图。nMaple:Maple:具有无与伦比的符号计算能力。nMathematicaMathematica:它拥有强大的数值计算和符号计算能力。Mathematica和Maple则分居符号计算软件的前两名。nMathcadMathcad:是MathSoft公司在20世纪80年代推出的一个交互式的数学文字
2、软件。和Maple相比,MathCAD的文字处理能力较强。因其提供计算、图形、文字处理的统一环境而深受中学生欢迎。nOriginOrigin:技术图形和数据分析软件。数据分析包括数据的排序、调整、计算、统计、频谱变换、曲线拟合等各种完善的数学分析功能。2Matlab语言的特点n简单易学-演算纸式的科学算法语言nMatlab具有丰富的数值计算功能n具有若干功能强大的应用工具箱n具有良好的图视功能n使用方便,具有很好的扩张功能3Matlab语言的主要特点n简单易学简单易学-演算纸式的科学算法语言演算纸式的科学算法语言例如,求例如,求。用语言编程如下:include“math.h”main()flo
3、at a;a=sqrt(5);printf(“a=5.3fn”,a)用matlab求解如下:a=sqrt(5)a=2.2361结果为:a=2.236fprintf(1,a=%5.3fn,a)a=2.2364Matlab语言的主要特点(续)(续)nMATLAB具有丰富的数值计算功能。具有丰富的数值计算功能。1)包括矩阵各种运算:如:正交变换、三角分解、特征包括矩阵各种运算:如:正交变换、三角分解、特征值、常见的特殊矩阵等。值、常见的特殊矩阵等。2)包括各种特殊函数包括各种特殊函数:如:贝塞尔函数、勒让德函数、伽如:贝塞尔函数、勒让德函数、伽码函数、贝塔函数、椭圆函数等。码函数、贝塔函数、椭圆函数
4、等。3)包括各种数学运算功能包括各种数学运算功能:如:数值微分、数值积分、插如:数值微分、数值积分、插值、求极值、方程求根、值、求极值、方程求根、FFT、常微分方程的数值解、常微分方程的数值解等。等。进行数值计算的基本单位是进行数值计算的基本单位是矩阵矩阵,而且不需定义数组的,而且不需定义数组的维数,使之在求解诸如信号处理、建模、系统识别、控制、维数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的它高级语言所不能比拟的。5Matlab语言的主要特点(续)(续)n具有若干
5、功能强大的应用工具箱具有若干功能强大的应用工具箱Matlab中包括了被称作工具箱(Toolbox)的各类应用问题的求解工具。工具箱实际上是对Matlab进行扩展应用的一系列Matlab函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。随着Matlab版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。6Matlab语言的主要特点(续)(续)n具有良好的图视功能具有良好的图视功能、可方便地画出两维和三维图形。、高级图形处理。如:色彩控制、句柄图形、动画等。、图形用户界面GUI制作
6、工具,可以制作用户菜单和控件。使用者可以根据自己的需求编写出满意的图形界面。n可以直接处理声音和图形文件可以直接处理声音和图形文件、声音文件。如:WAV文件(例:wavreadwavread,soundsound等)。、图形文件。如:bmp、gif 等。7Matlab语言的主要特点(续)(续)n使用方便,具有很好的扩张功能使用方便,具有很好的扩张功能、使用Matlab语言编写的程序可以直接运行,无需编译。、可以把M文件转变为独立于平台的EXE可执行文件。、Matlab的应用接口程序API是Matlab提供的 十分重要的组件,由 一系列接口指令组成。用户就可在FORTRAN或C中,把Matlab
7、当作计算引擎使用。8 图 Matlab 程序界面工作空间工作空间命令的历命令的历史记录史记录命令窗口命令窗口当前目录当前目录提示符提示符9 1)单击“?”图标(html)2)help/using the desktop(html)3)联机查询指令,help命令 help FunctionName 其中,FunctionName为要查询的函数名。4)lookfor指令 lookfor 关键词(如,lookfor fourier)Matlab提供了十分详细的帮助文件(提供了十分详细的帮助文件(PDF、HTML文件)。文件)。Matlab联机帮助Html和pdf文件可从网上下载如,help sumS
8、UM Sum of elements.For vectors,SUM(X)is the sum of the elements of X.For matrices,SUM(X)is a row vector with the sum over each column.10应用演示程序demosMatlab的演示程序demos给用户提供各种各样的功能演示,运行此程序对了解Matlab/Simulink有很大的帮助。demos11 在MATLAB下进行基本数学运算,只需将运算式直接打入提示符(“”)后,并按入Enter键即可。例如:(10*19+2/4-34)/2*3 ans=234.7500 M
9、atlab会将运算结果直接存入一变量ans,代表Matlab运算后的答案,并显示其数值。ans为保留变量,它将永远存放最近一次无赋值变量语句的运算结果。Matlab基本语法及数据显示格式基本语法及数据显示格式12 如果在上述的例子结尾加上”;”,则表达式同样运行,但不在命令窗口显示结果,要得知计算值只须键入该变量名即可。(10*19+2/4-34)/2*3;ans 234.7500 Matlab要求表达式在使用变量以前,一定要先对其进行赋值操作。Matlab的赋值操作的赋值操作13如,有算术表达式:,其中,p=7.1,x=4.92,k=-1.7。p=7.1;x=4.92;k=-1.7;或者,p
10、=7.1;x=4.92;k=-1.7;t=(1/(1+p*x)k Matlab的赋值操作(续)的赋值操作(续)t=440.8779“=”为赋值符号14 如果一个指令过长可以在结尾加上“”(代表此行指 令与下一行连续),例如3*.6 ans=18Matlab的赋值操作(续)的赋值操作(续)15变量及其命名规则n变量名不可以超过31个字符,超出字符将被忽略n变量名要求以大写或小写字母开头,后面可跟大小写字母,数字或下划线。n字符间不允许有空格n变量对大小写敏感如,合法变量 junk,junK,F_1,A_b_C_d 不合法变量 123,1A,_abc,a#,a b16常见的常见的Matlab预定义
11、变量预定义变量ans通用变量名epsMatlab定义的正的极小值=2.2204e-16,若某个量的绝对值小于eps,则可以认为这个量为。pi 内建的值,双精度浮点表示。Inf 值NaN 不定式(Not a Number),通常由0/0,Inf/Inf 及其它可能的运算得出。i 或 j 若i或j不被改写,则它们表示纯虚数单位i=j=-1Nargin 函数输入参数个数Nargout 函数输出参数个数1/0Warning:Divide by zero ans=Inf17变量管理变量管理 在Matlab运行期间,可随时通过输入变量名或从表达式中引用变量名来访问变量的当前数值。Clear函数清除内存中所
12、有变量,格式为:clear在Workspace窗口中可显示所有的变量列表。同样的功能还可用Whos命令来实现。whos18 whos Name Size Bytes Class ans 1x1 8 double array x 10 x10 800 double array y 10 x10 800 double array z 10 x10 800 double arrayGrand total is 301 elements using 2408 bytes变量长度变量长度变量存储字变量存储字节数节数变量类型变量类型变量管理(续)变量管理(续)19MATLAB利用了箭头可以将所下过的指令叫
13、回来重覆使用。按下则前一次指令重新出现,之后再按Enter键(在此之前,可修改命令行),即再执行前一次的指令。而键的功能则是往后执行指令。完成同样功能也可用“p”。“c”(ctrl和c同时按下)用于终止程序或函数的执行。命令的重复键入及程序或函数的终止命令的重复键入及程序或函数的终止20第二部分第二部分 Matlab语言基础语言基础21向量的创建(向量的创建(vectors)1 1、行向量、行向量 f=a x b 或 f=a,x,b,其中a,x,b,可以是变量、数值、表达式或字符串。2 2、列向量、列向量 f=a;x;b;或 f=a,x,b,3 3、利用冒号创建向量、利用冒号创建向量(通常用来
14、创建时间向量)通常用来创建时间向量)x=s:d:f 其中,s=起始值 d=增量(步长)f=终值 用用 将将元素置元素置于其中于其中t=0:5 t=0 1 2 3 4 522向量的创建向量的创建、用、用linspace函数创建向量函数创建向量已知指定范围(s,f)和期望的数值个数n。格式如下:x=linspace(s,f,n)等同于:x=s s+d d+2d s+(n-1)d 其中,d=(f-s)/(n-1)当当n省略时,省略时,默认值为默认值为100常用于绘图常用于绘图时坐标轴向时坐标轴向量的定义量的定义23要显示前要显示前5个值个值:要显示后要显示后5个值个值:设设x=1:1:10,试进行如
15、下操作:试进行如下操作:访问向量的第三访问向量的第三个元素:个元素:求向量的长度:求向量的长度:length(x)向量元素的访问向量元素的访问24矩阵的创建矩阵的创建1、一般矩阵的创建、一般矩阵的创建2、标准矩阵的创建、标准矩阵的创建1)ones(n)%产生全部元素均为1的nn阶矩阵;2)ones(r,c)%产生全部元素为1的rc阶矩阵;3)zeros(n)和zeros(r,c)4)eye(n)%产生一对角线全为1的n阶单位矩阵A=a1,a2,a3;b1,b2,b3;c1,c2,c3ai,bi,ci可以是变量、数值、表达式、字符串。25矩阵的创建矩阵的创建3、用、用repmat函数和函数和me
16、shgrid函数创建函数创建矩阵矩阵Repmat函数调用格式为:函数调用格式为:repmat(x,r,c)%通过复制x,产生rc的矩阵26矩阵的创建矩阵的创建meshgrid的调用格式为:的调用格式为:u,v=meshgrid(s,t)%通过复制向量s,t,生成两个矩阵u,v。s,t为两个行向量。相当于,u=repmat(s,length(t),1)v=repmat(t,1,length(s)这个函数在画3D图时非常有用27矩阵元素的访问及操作矩阵元素的访问及操作定义矩阵为A=1 2 3;4 5 6;7 8 9,顺次执行以下操作:将第3行,第3列的元素置0:将第2列元素除以2:把第3行加到第1
17、行(第3行保持 不变):删除第2行:A(3,3)=0 A(:,2)=A(:,2)/2A(1,:)=A(3,:)+A(1,:)A(2,:)=A=8 5 3 7 4 028矩阵的数学运算矩阵的数学运算命令描述AB对应元素相加(减)A*B两矩阵相乘A.*B对应元素相乘(点乘)A/B AB(相当于A-1*B)右除左除A./B点除A.c指数运算A,B为矩阵,c为标量。29 对对同阶矩阵同阶矩阵中对应元素进行中对应元素进行直接的算术运算。直接的算术运算。A.*B A,B中只要有一个标 A./B 量,就等同A*B,A/B。A.c:“.”不能省。若A为方阵,A*A*A=A3A.3如,A=1 2;3 4 A3=
18、37 54;81 118A.3=1 8;27 64点运算点运算若求x5,则必须写成x.5.30左除和右除AB就是由高斯消元法求解线性方程组AX=B的解。相当于A的逆左乘B:A-1*B。左除:左除:B 右除:右除:A/B相当于A左乘B的逆。A*inv(B)inv(B)与B-1等同31例,对于下列线性方程组AX=b,试求取未知的参数向量X。4 2 -10 22 10 -12 5-4 6 16 -63 -2 8 7X1 X2 X3 X4=-10321621分析:最小二乘法是系统辨识领域的经典辨识分法,一般用于大规模数据的系统参数辨识。可求得:X=(ATA)-1 ATbX=inv(A*A)*A*b方法
19、二:直接求逆X=inv(A)*b 方法三:左除,X=Ab方法一:最小二乘法A是方阵,三种求解结果相同,若为长方阵,采用方法二不行,只能用方法一或方法三。其算法就是最小二乘法32在matlab中,多项式也是用向量表示。按递减顺序依次输入多项式的系数即可。如有下列多项式:s4+3s3-15s2-2s+9在matlab中输入:x=1 3 15 2 9;如果多项式中有为的系数,也必须把写入。求多项式的根:roots(x)或输入或输入roots(1 3 15 2 9)ans=-5.5745 2.5836 -0.7951 0.7860多项式(多项式(Polynomials)33矩阵的逻辑运算command
20、描述&B and(A,B)“与”运算,两矩阵中对应元素进行“与”运算,若两个数均非,则结果为,否则为。A|B or(A,B)“或”运算,两对应元素均为,则为,否则为。A not(A)“非”运算,若元素为,则为,否则为。34矩阵的关系运算矩阵的关系运算关系运算是针对两个矩阵的对应元素的,若关系满足,则该元素置为,否则为。注意区别赋值注意区别赋值符号符号“”与与等于关系符号等于关系符号“”关系运算主要用于程序流程控制关系运算符描述大于=大于等于 C=1 2 3 6;4 3 2 3;9 9 1-2;4 2 2 1;a=1 2 1 4;y=gaussElim(C,a)y=0.6809 -0.8936
21、1.8085 -0.5532调用函数调用函数结果显示结果显示 函数中使用的变量名不必和从matlab命令窗口、程序文件或另一函数中调用此函数时使用的名字一致。但圆括号内输入变量的位置确定了信息的传递顺序-在调用语句中的第一个参数将值传递到函数接中定义的第一个参数,依此类推。给输入变量赋值给输入变量赋值45M函数与M程序文件的比较n后缀名均为.mnM函数有自己专用的工作空间,它与matlab的工作空间分开。函数内部变量与matlab工作空间之间的唯一联系就是函数的输入和输出变量,这与M程序文件完全不同。而且函数是值传递的,换而言之,你在函数内部对输入变量做任何修改,都不会影响matlab工作空间
22、的变量。46数据的输入n给变量赋值(向量,矩阵等)nInput函数n定义只包含数据的函数n数据存放于ASCII文本文件中,然后用load函数调用nMatlab与Excel连接47在程序设计时,往往需要在命令窗口中显示信息,以提示用户输入什么,可采用input函数。格式如下:格式如下:InputData=input(Enter the Data A:)在命令窗口中显示:Enter the Data A:在此输入数据,可以在此输入数据,可以是标量,向量,矩阵是标量,向量,矩阵和字符串和字符串数据的输入-input函数Enter the Data A:1,2,3,4InputData=1 2 3 4
23、用户输入,若输入为字符串,则输入string48数据的输入定义存储数据的函数function dat=FactorialDatadat1=159,168,158,166,175,179 173 179 164 187 163 185 168 197 170 194;dat2=163 175 163 168 178 183 168 182 159 189 159 191 174 199 174 198;dat=dat1 dat2;函数调用:fdata=FactorialData当函数仅仅用来以指定的方式存储数据时,函数不需要任何输入参数。49数据输入用load函数调用文本文件load函数的作用是
24、将不带扩展名的主文件名变为变量名,将文件中的数据变为向量或矩阵元素。将数据存放在ASCII文本文件中,然后调用load函数。50程序流程控制Matlab中程序流程控制命令有4种:while;if;for;switch。一、while循环语法结构:条件为真?语句endNYwhile 条件 语句end51if 语句 if 条件#1 表达式#1 elseif 条件#2 表达式#2 else 表达式#3 endif语句的常见格式:条件1条件2表达式1表达式2表达式3endYNYN52for 循环 for循环可按指定次数重复执行一系列语句,其常见结构如下:for 变量=s1:s3:s2 循环语句 end
25、s1变量变量变量在变量在s1,s2之间之间循环语句循环语句变量变量+s3 变量变量endYN53switch语句 其基本语法结构如下:switch 开关表达式 case 表达式1 语句段1 case 表达式2 语句段2 otherwise 语句段n end开关表达式表达式1表达式2其他语句段1语句段2语句段n等于等于等于等于等于等于54第三部分 Matlab绘图55二维图形绘制基本的绘图指令 Plot(x,y)绘制以x为横坐标,以y为纵坐标 的二维图形。56我们可以对图形的颜色和线型进行修改。在plot命令里加入第三个参数(在单引号内)。t=0:0.25:7;y=sin(t);plot(t,y
26、,r:)如将上例中正弦曲线改成红色的点线。其它颜色和线型如表所示。图形窗口的修饰57举例参见demos/graphic/lineplotting图形修饰的各种选项yyellow.pointmmagentaocircleccyanxX-markrred+plusggreen-solidbblue*starwwhite:dottedkblack-dashed-.dash dot58x=linspace(0,2*pi,50);y=sin(x);z=cos(x);plot(x,y,r,x,z,gx)在同一图形窗口中画多根曲线方法一:y=sin(t);cos(t);plot(t,y)方法二:59方法三:
27、采用hold on 和hold off 可达到同样的效果。x=linspace(0,2*pi,50);y=sin(x);plot(x,y,r)z=cos(x);hold on plot(x,z,gx)hold off 在默认情况下,每执在默认情况下,每执行一次行一次plot命令,当命令,当前图形将被刷新。前图形将被刷新。如如果用了果用了hold on命令,命令,从那开始的所有图形从那开始的所有图形将会画在同一图形窗将会画在同一图形窗口中,不会刷新以前口中,不会刷新以前的图,直到的图,直到hold off出现出现。在同一图形窗口中画多根曲线60 命令格式为:subplot(m,n,p)将图形窗口
28、分成m行n列个子窗口,p是所选择绘图子窗口。比如,要想将正弦曲线,余弦曲线以及正切曲线画在一个图形窗口中,但又不在同一坐标轴上,下面这个M-file可以实现:图形窗口的分割subplot函数61x=linspace(0,2*pi,50);y=sin(x);z=cos(x);w=tan(x);subplot(2,2,1)%将图形窗口分成22的4个子窗口,选 择第一个画正弦曲线 plot(x,y)subplot(2,2,2)plot(x,z)subplot(2,2,3)plot(x,w)subplot函数(续)62命令格式如下:axis(xmin,xmax,ymin,ymax)t=0:0.01:5
29、;y=exp(5*t)-1;plot(t,y)如,画出函数y=exp(5t)-1的曲线axis(0,1,0,50)改变坐标轴的大小axis命令63 title(title string)加入图形标题 xlable(x-axis string)%给x轴加标注 ylable(y-axis string)%给y轴加标注 此外,还可以在图形上加标注 text(xcor,ycor,textstring)%(xcor,ycor)为第一个字符的坐标值。gtext(textstring)%使用鼠标决定文本的位置给图形加入文本标注所有这些所有这些命令都可命令都可以绘图命以绘图命令完了以令完了以后加入。后加入。6
30、4在前例中程序后加上以下指令:title(this is a plot)xlabel(time(sec)ylabel(yout)text(0.4,40,y=exp(5t)-1)gtext(y=exp(5t)-1)给图形加入文本标注(续)65 figure(n)%打开一个新的图形窗口,保留以前的图形窗口打开一个新的图形窗口,保留以前的图形窗口若若n省略,则省略,则matlab自动自动给出下一个整给出下一个整数值数值 clf%清除当前的图形,使当前的图 形窗口为空白若要选择某若要选择某一个已有的一个已有的图形窗口,图形窗口,也可采用也可采用figure(n)其它图形控制命令(figure,clf,
31、grid)66 grid%给图形加网格grid off%去掉网格其它图形控制命令(其它图形控制命令(figure,clf,grid)(续)(续)close%关闭当前的图形窗口67三维图形绘制n、三维曲线的绘制 Plot3(x,y,z,选项)x,y,z分别为维数相同的向量68三维图形绘制n2、三维曲面的绘制mesh(x,y,z)%绘制三维表面网格图f(x,y)69三维图形绘制n2、三维曲面的绘制nsurf(x,y,z)%Surf画出的曲面由彩块组成z=f(x,y).70画,-4 x4 -4 y4Meshc是在得到曲面的同时,还可以在Z=0平面上显示等高线。Meshgrid函数创建了两个30130
32、1阶矩阵,因此可以估算出X,Y在任意组合下的Z的值。估算方法是通过计算Z=Z(X,Y)时由隐含的点操作完成的。71第四部分第四部分 simulink基础基础(可视化建模与仿真)72基本使用启动simulink的方法有三种:simulink模型库浏览器1)在命令窗口键入simulink.2)file/new/model3)按matlab工具栏中的simulink按钮73仿真一个简单的模型74Simulink模型的建立打开一个空白的编辑窗口并将模块库中 模块复制到编辑窗口中链接75模块的连接与简单处理未连接未连接给模块加给模块加阴影效果阴影效果改变字体,修改改变字体,修改模块的背景色模块的背景色7
33、6模块参数的修正如饱和模块 的参数对话框77启动仿真环境Start simulation78仿真控制参数选择打开仿真参数对话框79仿真控制参数选择(续)仿真时间仿真时间仿真算法选择仿真算法选择输出信号的精输出信号的精确处理确处理一般连续系统仿真应该选择ode45变步长算法。对于刚性问题可选择变步长的ode15s算法,离散系统一般默认地选择定步长的discrete算法。离散模型中含有连续环节的要采用诸如四阶龙格库塔此类的算法。80Simulink模块库介绍Simulink模块库模块库标准标准Simulink模块库模块库连续模块组连续模块组Sim power systems Control system toolbox离散模块组离散模块组数学运算模块组数学运算模块组信号源模块组信号源模块组输出池模块组输出池模块组81标准标准Simulink模块库模块库82Sim power systems模块库83结束!84