1第一部分Matlab语言概述2Matlab与其它数学软件比较MATLAB:MATLAB名字是由MATrix和LABoratory两个词的前三个字母组合而成的,意为“矩阵实验室”。是一个高性能的科技计算软件,在数值计算方面独占鳌头,广泛应用于数学计算、建模、仿真和数据分析处理及工程作图。Maple:具有无与伦比的符号计算能力。Mathematica:它拥有强大的数值计算和符号计算能力。Mathematica和Maple则分居符号计算软件的前两名。Mathcad:是MathSoft公司在20世纪80年代推出的一个交互式的数学文字软件。和Maple相比,MathCAD的文字处理能力较强。因其提供计算、图形、文字处理的统一环境而深受中学生欢迎。Origin:技术图形和数据分析软件。数据分析包括数据的排序、调整、计算、统计、频谱变换、曲线拟合等各种完善的数学分析功能。3Matlab语言的特点简单易学-演算纸式的科学算法语言Matlab具有丰富的数值计算功能具有若干功能强大的应用工具箱具有良好的图视功能使用方便,具有很好的扩张功能4Matlab语言的主要特点简单易学-演算纸式的科学算法语言例如,求。用C语言编程如下:#include“math.h”main(){floata;a=sqrt(5);printf(“a=5.3f\n”,a)}用matlab求解如下:a=sqrt(5)a=2.2361结果为:a=2.236fprintf(1,'a=%5.3f\n',a)a=2.2365Matlab语言的主要特点(续)MATLAB具有丰富的数值计算功能。1)包括矩阵各种运算:如:正交变换、三角分解、特征值、常见的特殊矩阵等。2)包括各种特殊函数:如:贝塞尔函数、勒让德函数、伽码函数、贝塔函数、椭圆函数等。3)包括各种数学运算功能:如:数值微分、数值积分、插值、求极值、方程求根、FFT、常微分方程的数值解等。进行数值计算的基本单位是矩阵,而且不需定义数组的维数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。6Matlab语言的主要特点(续)具有若干功能强大的应用工具箱Matlab中包括了被称作工具箱(Toolbox)的各类应用问题的求解工具。工具箱实际上是对Matlab进行扩展应用的一系列Matlab函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。随着Matlab版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。7Matlab语言的主要特点(续)具有良好的图视功能1、可方便地画出两维和三维图形。2、高级图形处理。如:色彩控制、句柄图形、动画等。3、图形用户界面GUI制作工具,可以制作用户菜单和控件。使用者可以根据自己的需求编写出满意的图形界面。可以直接处理声音和图形文件1、声音文件。如:WAV文件(例:wavread,sound等)。2、图形文件。如:bmp、gif等。8Matlab语言的主要特点(续)使用方便,具有很好的扩张功能1、使用Matlab语言编写的程序可以直接运行,无需编译。2、可以把M文件转变为独立于平台的EXE可执行文件。3、Matlab的应用接口程序API是Matlab提供的十分重要的组件,由一系列接口指令组成。用户就可在FORTRAN或C中,把Matlab当作计算引擎使用。9图Matlab程序界面工作空间命令的历史记录命令窗口当前目录提示符101)单击“?”图标(html)2)help/usingthedesktop(html)3)联机查询指令,help命令helpFunctionName其中,FunctionName为要查询的函数名。4)lookfor指令lookfor关键词(如,lookforfourier)Matlab提供了十分详细的帮助文件(PDF、HTML文件)。Matlab联机帮助Html和pdf文件可从网上下载如,helpsumSUMSumofelements.Forvectors,SUM(X)isthesumoftheelementsofX.Formatrices,SUM(X)isarowvectorwiththesumovereachcolumn.……11应用演示程序demosMatlab的演示程序demos给用户提供各种各样的功能演示,运行此程序对了解Matlab/Simulink有很大的帮助。demos12在MATLAB下进行基本数学运算,只需将运算式直接打入提示符(“”)后,并按入Enter键即可。例如:(10*19+2/4-34)/2*3ans=234.7500Matlab会将运算结果直接存入一变量ans,代表Matlab运算后的答案,并显示其数值。ans为保留变量,它将永远存放最近一次无赋值变量语句的运算结果。Matlab基本语法及数据显示格式13如果在上述的例子结尾加上”;”,则表达式同样运行,但不在命令窗口显示结果,要得知计算值只须键入该变量名即可。(10*19+2/4-34)/2*3;ans234.7500Matlab要求表达式在使用变量以前,一定要先对其进行赋值操作。Matlab的赋值操作14如,有算术表达式:,其中,p=7.1,x=4.92,k=-1.7。p=7.1;x=4.92;k=-1.7;或者,p=7.1;x=4.92;k=-1.7;t=(1/(1+p*x))^kt=(11+px)kMatlab的赋值操作(续)t=440.8779“=”为赋值符号15如果一个指令过长可以在结尾加上“…”(代表此行指令与下一行连续),例如3*...6ans=18Matlab的赋值操作(续)16变量及其命名规则变量名不可以超过31个字符,超出字符将被忽略变量名要求以大写或小写字母开头,后面可跟大小写字母,数字或下划线。字符间不允许有空格变量对大小写敏感如,合法变量junk,junK,F_1,A_b_C_d不合法变量123,1A,_abc,a#,ab17常见的Matlab预定义变量ans通用变量名epsMatlab定义的正的极小值=2.2204e-16,若某个量的绝对值小于eps,则可以认为这个量为0。pi内建的π值,双精度浮点表示。±Inf±∞值NaN不定式(NotaNumber),通常由0/0,Inf/Inf及其它可能的运算得出。i或j若i或j不被改写,则它们表示纯虚数单位i=j=√-1Nargin函数输入参数个数Nargout函数输出参数个数1/0Warning:Dividebyzeroans=Inf18变量管理在Matlab运行期间,可随时通过输入变量名或从表达式中引用变量名来访问变量的当前数值。Clear函数清除内存中所有变量,格式为:clear在Workspace窗口中可显示所有的变量列表。同样的功能还可用Whos命令来实现。whos19whosNameSizeBytesClassans1x18doublearrayx10x10800doublearrayy10x10800doublearrayz10x10800doublearrayGrandtotalis301elementsusing2408bytes变量长度变量存储字节数变量类型变量管理(续)20MATLAB利用了↑↓箭头可以将所下过的指令叫回来重覆使用。按下↑则前一次指令重新出现,之后再按Enter键(在此之前,可修改命令行),即再执行前一次的指令。而↓键的功能则是往后执行指令。完成同样功能也可用“^p”。“^c”(ctrl和c同时按下)用于终止程序或函数的执行。命令的重复键入及程序或函数的终止21第二部分Matlab语言基础22向量的创建(vectors)1、行向量f=[axb…]或f=[a,x,b,…]其中a,x,b,…可以是变量、数值、表达式或字符串。2、列向量f=[a;x;b;…]或f=[a,x,b,…]’3、利用冒号创建向量(通常用来创建时间向量)x=s:d:f其中,s=起始值d=增量(步长)f=终值用[]将元素置于其中t=0:5t=01234523向量的创建4、用linspace函数创建向量已知指定范围(s,f)和期望的数值个数n。格式如下:x=linspace(s,f,n)等同于:x=[ss+dd+2d…s+(n-1)d]其中,d=(f-s)/(n-1)当n省略时,默认值为100常用于绘图时坐标轴向量的定义24要显示前5个值:要显示后5个值:设x=1:1:10,试进行如下操作:访问z向量的第三个元素:求向量的长度:length(x)向量元素的访问25矩阵的创建1、一般矩阵的创建2、标准矩阵的创建1)ones(n)%产生全部元素均为1的n×n阶矩阵;2)ones(r,c)%产生全部元素为1的r×c阶矩阵;3)zeros(n)和zeros(r,c)4)eye(n)%产生一对角线全为1的n阶单位矩阵A=[a1,a2,a3;b1,b2,b3;c1,c2,c3]123123123aaaAbbbcccai,bi,ci可以是变量、数值、表达式、字符串。26矩阵的创建3、用repmat函数和meshgrid函数创建矩阵Repmat函数调用格式为:repmat(x,r,c)%通过复制x,产生r×c的矩阵27矩阵的创建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图时非常有用28矩阵元素的访问及操作定义矩阵为A=[123;456;789],顺次执行以下操作:将第3行,第3列的元素置0:将第2列元素除以2:把第3行加到第1行(第3行保持不变):删除第2行:A(3,3)=0A(:,2)=A(:,2)/2A(1,:)=A(3,:)+A(1,:)A(2,:)=[]A=85374029矩阵的数学运算命令描述A±B对应元素相加(减)A*B两矩阵相乘A.*B对应元素相乘(点乘)A/BA\B(相当于A^-1*B)右除左除A./B点除A.^c指数运算A,B为矩阵,c为标量。30对同阶矩阵中对应元素进行直接的算术运算。A.*BA,B中只要有一个标A./B量,就等同A*B,A/B。A.^c:“.”不能省。若A为方阵,A*A*A=A^3≠A.^3如,A=[12;34]A^3=[3754;81118]A.^3=[18;2764]点运算若求x5,则必须写成x.^5.31左除和右除A\B就是由高斯消元法求解线性方程组AX=B的解X。相当于A的逆左乘B:X=A^-1*B。左除:A\B右除:A/B相当于A左乘B的逆。A*inv(B)inv(B)与B^-1等同32例,对于下列线性方程组AX=b,试求取未知的参数向量X。4–2-1022–10-125-4–616-63-287X1X2X3X4=-10321621分析:最小二乘法是系统辨识领域的经典辨识分法,一般用于大规模数据的系统参数辨识。可求得:X=(ATA)-1ATbX=inv(A'*A)*A’*b方法二:直接求逆X=inv(A)*b方法三:左除,X=A\b方法一:最小二乘法A是方阵,三种求解结果相同,若为长方阵,采用方法二不行,只能用方法一或方法三。其算法就是最小二乘法33在matlab中,多项式也是用向量表示。按递减顺序依次输入多项式的系数即可。如有下列多项式:s4+3s3-15s2-2s+9在matlab中输入:x=[13–15–29];如果多项式中有为0的系数,也必须把0写入。求多项式的根:roots(x)或输入roots([13–15–29])ans=-5.57452.5836-0.79510.7860多项式(Polynomials)34矩阵的逻辑运