资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,基础知识,Matlab,简介,Matlab: Matrix Laboratry,矩阵实验室,Matlab,是一种广泛应用于工程计算及数值分析领域的新型高级语言,自,1984,年推向市场以来,历经二十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。,在欧美各高等院校,,Matlab,已经成为线性代数、数值分析、数理统计、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等课程的基本教学工具,已成为大学生必须掌握的基本技能之一。,Matlab,功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。,通讯和卫星,船舶系统,财务,航空航天动力学系统,生物,汽车,MATLAB,产品的,应用领域,Matlab,的发展,1980,年,,Moler,教授用,Fortran,语言编写了集命令翻译、科学计算于一身的一套交互式软件系统。,1984,年,,Moler,等成立了,The MathWorks,的公司,用,C,语言完全改写,Matlab,,并推出第一个商业版。,增添图形图像处理、符号运算、以及与其他流行软件的接口功能,使得,Matlab,的功能越来越强大。,到九十年代,在国际上,30,几个数学类科技应用软件中,,Matlab,在数值计算方面独占鳌头。,Matlab,的版本,1984,年,,Matlab 1.0,(,DOS,版,,182K,,,20,多个函数),1992,年,,Matlab 4.0,(,93,年推出,Windows,版,加入,simulink,),1994,年,,Matlab 4.2,(得到广泛重视和应用),1999,年,,Matlab 5.3,(真正实现,32,位运算),2002,年,,Matlab 6.5,(采用,JIT,加速器),2004,年,,Matlab 7.0,2006,年,,Matlab R2006a,,,Matlab R2006b,2007,年,,Matlab R2007a,,,Matlab R2007b,2008,年,,Matlab R2008a,Matlab,的特点与功能,Matlab,具有很强的数值计算功能,Matlab,以,矩阵,作为数据操作的基本单位,但无需预先指定 矩阵维数(,动态定维,),按照,IEEE,的数值计算标准进行计算,提供十分丰富的数值计算函数,方便计算,提高效率,Matlab,命令与数学中的符号、公式非常接近,可读性强, 容易掌握,Matlab,是一个交互式软件系统,输入一条命令,立即就可以得出该命令的结果,Matlab,符号计算功能,Matlab,和著名的符号计算语言,Maple,相结合,Matlab,的编程功能,Matlab,具有,程序结构控制,、,函数调用,、,数据结构,、,输入输出,、,面向对象,等程序语言特征,而且,简单易学,、,编程效率高,。,通过,Matlab,提供的编程语言进行编程完成特定的任务,Matlab,的绘图功能,Matlab,提供丰富的绘图命令,很方便实现数据的可视化,Matlab,丰富的工具箱(,toolbox,),根据专门领域中的特殊需要而设计的各种可选工具箱,Matlab,的,Simulink,动态仿真集成环境,提供建立系统模型、选择仿真参数和数值算法、启动仿真程序对该系统进行仿真、设置不同的输出方式来观察仿真结果等功能,Symbolic Math,PDE,Optimization,Signal process,Image Process,Statistics,Control System,System Identification,MATLAB,的安装,MATLAB,可以运行在,PC,、,Macintosh,和,Unix/Linux,工作站等,安装时要选择好相应的,MATLAB,的版本。,安装时可以选择安装哪些“组件”,MATLAB,:,最核心的部分,一定要安装,Symbolic Math Toolbox,:,符号计算工具箱,Simulink,:交互式仿真工具箱,Matlab,的安装,插入光盘,自动运行; 或点击安装程序,setup.exe,Matlab,的工作界面,命令窗口,当前工作目录,当前工作空间,输入命令的历史记录,命令,提示符,回到默认界面的方法,MATLAB,的设置,用户根据需要,可以对指令窗的字体风格、大小、颜色和数值计算结果显示格式进行设置。,Command Window,是进行各种,MATLAB,操作的最主要窗口,可键入各种送给,MATLAB,运作的指令、函数、表达式,并显示除图形外的所有运算结果。,指令窗中有指令行提示符,“, ”,。,指令窗对关键字、字符串、注释等采用不同的颜色表示。,(,1,)用键盘在,MATLAB,指令窗中输入以下内容, (12+2*(7-4)/32,(,2,)在上述表达式输入完成后,按,【Enter】,键,该就指令被执行。,(,3,)在指令执行后,,MATLAB,指令窗中将显示以下结果。,ans =,2,说明:“,”,是提示符,,“,ans”,是,matlab,的一个默认变量,(,1,)在键盘上输入下列内容,A = 1,2,3; 4,5,6; 7,8,9,(,2,)按,【Enter】,键,指令被执行。,(,3,)在指令执行后,,MATLAB,指令窗中将显示以下结果:,A =,1 2 3,4 5 6,7 8 9,说明:直接输入矩阵时,,矩阵元素用空格或逗号分隔,,,矩阵行用分号分隔,,,整个矩阵放在方括号里,,标点符号一定要在英文状态下输入。,指令窗的常用控制指令,clc,清除指令窗中显示内容,clear,清除,matlab,工作空间中保存的所有变量,clear a,清除变量,a,clear x y,清除变量,x,和,y,(,x,和,y,之间不能用逗号,),clear all,清除,matlab,工作空间中所有的变量、函数和,mex,文件,exit (quit),关闭,/,退出,matlab,edit,打开,m,文件编辑器,指令窗中指令行的编辑,M,脚本文件,M,文件是指:,(,1,)该文件中的指令形式和前后位置,与解决同一个问题在指令窗中输入的那组指令没有任何区别;(,2,),matlab,在运行这个脚本时,只是简单地从文件中读取一条条指令,送到,matlab,中去执行;(,3,)脚本文件运行产生的变量滞留在,MATLAB,基本工作空间中;(,4,)文件扩展名是”,.m”,。,(,5,)文件名必须遵循,matlab,的变量命名规则,运行,M,文件的方法:,(,1,)在指令窗中运行,M,文件名(不能带扩展名),;,(,2,)在当前目录窗中右击,M,文件,选择“,Run”,;(,3,)在,M,编辑器中,在菜单,debug,中选择,Run,M,脚本文件举例,%,匀加速运动的位移和速度的计算,clc;,clear all;,v0=0.89; %,初速度为,0.89m/s,a=0.43; %,加速度为,0.43m/s,2,t=input(please input t= ),v=v0+a*t,s=v0*t + a*t2/2,标量(,scalar,),Matlab,中标量是一个数,可以是实数,也可以是复数,标量可以看成,11,的数组(,array,)或矩阵(,matrix,)。,实数,Matlab,中的数默认是,双精度实数,(double),,表示方法同,C,语言,MATLAB,的数值采用习惯的十进制表示,可以带小数点或负号。例如:,300-10.10.0019.45 1.27e3-2.1e-5,说明:,1.27e3,代表的是,1.2710,3,在采用,IEEE,浮点算法的计算机上,实数的数值范围大致为,10,-308,10,308,。,Matlab,中特殊的实数,pi,:圆周率(,pi,只能用小写字母),Inf,,,inf,:无穷大,如,1/0,NaN,nan,:,not a number,非数,如,0/0,eps,:浮点运算相对精度,Matlab,中,上面这些量称为,系统预定义变量,(,Predefined variable),,,应尽量避免给系统预定义变量重新赋值!,相对精度,eps,eps,是一个可以加到,1,,在计算机的有限精度下,而使结果大于,1,的最小数值,eps = 2,-52, 2.220410,-16,1 + eps 1,(Y or N),1 + eps/2 1,(Y or N),sin(pi) = ?,sin(0)/0 = ?,NaN,(非数),等运算都会产生非数(,Not a Number,)。该非数在,MATLAB,中用,NaN,或,nan,记述。,非数的性质:,(,1,),NaN,参与运算所得的结果也是,NaN,,即具有传递性(,2,)非数没有“大小”概念,因此不能比较两个非数的大小,非数的作用:,(,1,)真实记述,0/0,, ,/ ,0 ,运算的后果;(,2,)避免可能因,0/0,, ,/ ,0 ,运算而造成程序执行的中断;(,3,)在数据可视化中,用来裁减图形,直接输入:,使用,complex,函数,复数,可以通过以下方式定义复数,z=3+4i,z=complex(3,4),z=complex(3),z=complex(3,0),虚部与虚数单位之间不能留空格,z=3+4*i,复数作为矩阵元素输入时,加号两边不能有空格,!,复数运算,与复数相关的一些函数,变量是任何程序设计语言的,基本元素,之一。,Matlab,并不要求对所使用的变量进行事先声明,也不需要指定变量类型,,Matlab,会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型。,在赋值过程中,如果变量已经存在,,Matlab,会用新值代替旧值,并以,新的变量类型代替旧的变量类型,。,Matlab,中的变量,变量名长度,不超过,63,( Matlab6.5.1,版本以上,),(英文、数字和下连线)(可以用,namelengthmax,函数查看当前版本的,matlab,允许的变量名最多包含多少个字符,老版本只能,31,个),变量名必须,以字母开头,,可包含字母(大小写)、数字和下划线,变量的命名规则,变量名,区分大小写,内存变量查阅、删除的指令,who,查阅,matlab,内存变量的简单信息,whos,查阅,matlab,内存变量的详细信息,clear,清除,matlab,工作空间中保存的所有变量,clear a,清除变量,a,clear x y,清除变量,x,和,y,(,x,和,y,之间不能用逗号,),clear all,清除,matlab,工作空间中所有的变量、函数和,mex,文件,也可以在,workspace,中对变量进行操作,变量的存储,存储当前工作空间中的变量,save,将所有变量存入文件 matlab.mat,存储,指定,的变量,save,mydata.mat,将所有变量存入文件,mydata,.mat,save,文件名,变量名列表,例,:,save,mydata,A x z,变量名列表中各变量之间用空格分隔。,变量的导入,导入存储在,.mat,文件中的,变量,load,导入,文件 matlab.mat,中的变量,导入指定,的变量,load,mydata.mat,导入入文件,mydata,.mat,中的变量,load,文件名,变量名列表,例,:,load,mydata,A x z,变量名列表中各变量之间用空格分隔。,数学运算符,+,加法,-,减法,*,乘法,/,和,除法(右除和左除),幂运算,Matlab,的数学运算符是定义在矩阵上的。,一个数在,matlab,中被看成,11,矩阵。,说明:,(,1,),MATLAB,所有的运算定义在复数域上。对于方根问题,运算只返回,i,处于第一象限的解。,(,2,),matlab,用左斜杠会右斜杠分别代表“左除”或“右除”运算。对标量而言,这二者的作用没有区别;但对矩阵来说,“左除”和“右除”将产生不同的结果。,Matlab,表达式的书写规则,表达式由变量名、运算符和函数名组成;,表达式将按与常规相同的优先级自左至右执行运算;,优先级的规定是:指数运算级别最高,乘除运算次之,加减运算级别最低;,括号可以改变运算的次序;,书写表达式时:赋值符“,=”,和运算符两侧允许有空格,以增加可读性。,数组,(array),及其运算,数值数组,(Numeric Array),和,数组运算,(Array Operations),是,MATLAB,的核心内容。数值数组,(,简称为数组,),是,MATALB,最重要的一种内建数据类型,(Built-in Data Type),一维数组和向量,一维数组,行:,1n ,行向量(,row vector,),列:,n1 ,列向量(,column vector,),一维数组的创建,逐个元素输入法,x=2, pi/2, sqrt(3), 3+5i,冒号生成法,x=a:inc:b,定数线性采样法,x=linspace(a,b,n),定数对数采样法,x=logspace(a,b,n),由多个一维数组组合,一维数组中单个元素的寻访和赋值,单个元素寻访,x(k) k,为元素的索引,(index),x=0:0.7:pi,x(3),x(10),单个元素的赋值,x(3) = 0,x(10)=7,一维数组中子数组的寻访和赋值,子数组的寻访,x(s),s,为一个数组,其元素为要访问的各个元素的索引,x(1 2 5),x(1:3),x(3:end),x(3:-1:1),子数组的赋值,x(1,4)=2,7,x(1,4)=10,二维数组和矩阵,二维数组是由实数或复数排列成矩形而构成的,从数据结构上看,矩阵和二维数组没有什么区别。当二维数组带有线形变换含义时,该二维数组就是矩阵(,matrix,)。,二维数组的创建,逐个元素输入法,x=2, pi/2 ; sqrt(3), 3+5i,由一维数组构成,a=1:2:99,b=2:2:100,c=a,b,d=a;b,由函数生成,常见的二维数组生成函数,zeros(m,n),生成一个,m,行,n,列的零矩阵,,m=n,时可简写为,zeros(,n,),ones(m,n),生成一个,m,行,n,列的元素全为,1,的矩阵,m,=,n,时可写为,ones(,n,),eye(m,n),生成一个主对角线全为,1,的,m,行,n,列矩阵,m=n,时可简写为,eye(,n,),,即为,n,维单位矩阵,diag(X),若,X,是矩阵,则,diag(X),为,X,的主对角线向量,若,X,是向量,,diag(X),产生以,X,为主对角线的对角矩阵,tril(A),提取一个矩阵的下三角部分,triu(A),提取一个矩阵的上三角部分,rand(m,n),产生,0,1,间均匀分布的随机矩阵,m,=,n,时简写为,rand(,n,),randn(m,n),产生均值为,0,,方差为,1,的标准正态分布随机矩阵,m,=,n,时简写为,randn(,n,),练习:在,matlab,中生成二维数组,a =,0 0 0,0 0 0,0 0 0,1 1 1,1 1 1,1 1 1,b =,1 0 0 0,0 2 0 0,0 0 3 0,0 0 0 4,-4 0 0 0,0 -3 0 0,0 0 -2 0,0 0 0 -1,二维数组操作函数,cat(dim, A, B),把“大小”相同的若干数组,沿“指定维”方向,串接成高维数组 。,行(,dim=1,) 列(,dim=2,),flipud,以数组“水平中线”为对称轴,交换上下对称位置上的数组元素,fliplr,以数组“垂直中线”为对称轴,交换左右对称位置上的数组元素,kron(X,Y),按,Kronecker,乘法规则,(直积),产生“积”数组,repmat(A,m,n),按指定的“行数、列数”铺放模块数组,以形成更大的数组,rot90(A,k),逆时针旋转,k90,度,reshape(A,m,n),在总元素数不便的前提下,改变数组的“行数、列数”,二维数组元素的标识,1,、“全下标”标识:,即指出是“第几行,第几列”的元素,2,、“单下标(,Linear Index,)”标识:,只用一个下标来指明元素在数组中的位置:,把二维数组的所有列,按先左后右的次序,首尾相接排成“一维长列”,然后,自上往下对元素位置进行标号。,二维数组的寻访和赋值,A(r,c),它由,A,的“,r,指定行”和“,c,指定列”上的元素组成,A(r,:),它由,A,的“,r,指定行”和“全部列”上的元素组成,A(:,c),它由,A,的“全部行”和“,c,指定列”上的元素组成,A(,:),“,单下标全元素”寻访。它由,A,的各列按自左到右的次序,首尾相接而生成的“一维长列”数组,A(s),“,单下标”寻访,生成“,s,指定的”一维数组。,S,若是“行数组”(或“列数组”),则,A(s),就是长度相同的“行数组”(或“列数组”),A(L),“,逻辑,1”,寻访,生成“一维”列数组:由与,A,同样大小的“逻辑数组”,L,中的“,1,元素”选出,A,的对应元素;按“单下标”次序排成长列组成,A(r,c)=Sa,以“双下标”方式,对子数组,A(r,c),进行赋值:,Sa,的“行宽、列长”必须与,A(r,c),的“行宽、列长”相同,A(,:)=D(:),全元素赋值方式。结果:保持,A,的“行宽、列长”不变。条件:,A,、,D,两个数组的总元素相等,但“行宽、列长”不一定相同,A(s)=Sa,按“单下标”方式,对,A,的部分元素重新赋值。结果:保持,A,的“行宽、列长”不变。条件:,s,单下标数组的长度必须与“一维数组”,Sa,的长度相等,但是,s,、,sa,不一定同是“行数组”或“列数组”,二维数组中单个元素的寻访和赋值,x,magic(6),单个元素寻访,x(2,3),x(5,5),x(16),单个元素的赋值,x(2,3) = 0,x(5,5)=7,x(16)=8,二维数组中子数组的寻访和赋值,子数组的寻访,x(1:3,:),x(:,2),x(:),x(1:3,end:-1:1),子数组的赋值,x(1:2,1:2)=ones(2,2),x(1:2,:)=0,与数组相关的一些函数,最大值,max(x),返回向量,x,中的最大值,a,b=max(x),返回向量,x,的最大值以及该最大值在向量,x,中所在的位置,max(x,y),返回一个矩阵,其大小与,x,、,y,相同,(x,、,y,必须具有相同的行数和列数,),。结果矩阵中的每一个元素是,x,和,y,对应位置元素的最大值。,最小值,min(x),c,d=min(x),min(x,y),均值与中值:,A=mean(x),计算向量,x,的平均值,B=median(x),求向量,x,中的元素的中值,排序值,sort(x),对向量,x,中的元素按升序排序,标准差,std(x),计算向量,x,中的数值的标准差,和,sum(x),计算向量,x,的元素的和,cumsum(x),返回一个包含向量,x,的元素的累加和的向量,其大小与向量,x,相同,积:,prod(x),计算向量,x,的元素的积,cumprod(x),返回一个包含向量,x,的元素的累乘积的向量,其大小与向量,x,相同,数组的长度,(,行数或列数种的较大值,),length(),数组的行数和列数,sz=size(A),当只有一个输出参数时,,size,函数返回的是一个行向量,该行向量的第一个元素是数组的行数,第二个元素是数组的列数。,r,c=size(A),当有两输出参数时,,size,函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。,r=,size(A,1),返回,数组,A 的行数,c=,size(A,2,),返回,数组,A 的,列,数,数组元素的总数,numel(),二维数组“单下标”与“全下标”的转化,全下标单下标,ind = sub2ind(siz,r,c),单下标全下标,r,c = ind2sub(siz,ind),数组运算,数组运算,是,matlab,软件所定义的运算规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。,无论在数组上施加什么运算,(,加减乘除或函数,),,总认定那种运算对被运算数组中的,每个元素,(Element),平等地实施同样的操作。,数组的运算,x+y,:加,对应位置的数组元素相加,x-y,:减,对应位置的数组元素相减,x.*y,:点乘,对应位置的数组元素相乘,x./y,:右除,对应位置的数组元素相除,x.y,:左除,x.y,:点幂,对应位置的数组元素做幂运算,x.,:转置,x,:共轭转置,函数作用在数组上的运算规则,例题:用,matlab,提供的数组函数对下面的数据进行线性回归计算,i,0,1,2,3,4,5,6,T,i,(),19.1,25.0,30.1,36.0,40.0,45.1,50.0,R,i,(,),76.30,77.80,79.25,80.80,82.35,83.90,85.10,测得铜导线在温度,T,i,下的电阻为,R,i,,编写一个,M,脚本文件求电阻,R,与温度,T,的线性函数关系,并与,origin,给出的结果进行比较,线性回归的原理,常用的函数,三角函数和双曲函数,名称,含义,名称,含义,名称,含义,acos,反余弦,asinh,反双曲正弦,csch,双曲余割,acosh,反双曲余弦,atan,反正切,hypot,平方和的平方根,acot,反余切,atanh,反 双曲正切,sec,正割,acoth,反双曲余切,atan2,四象限反正切,sech,双曲正割,acsc,反余割,cos,余弦,sin,正弦,acsch,反双曲余割,cosh,双曲余弦,sinh,双曲正弦,asec,反正割,cot,余切,tan,正切,asech,反双曲正割,coth,双曲余切,tanh,双曲正切,asin,反正弦,csc,余割,指数和对数函数,名称,含义,名称,含义,exp(x),e,x,pow2(x),2,的幂,2,x,Expm1(x),e,x,-1,reallog(x),非负实数,(,数组,),的自然对数,log(x),自然对数,ln(x),realpow(x,y),实数,(,数组,),的幂,log1p(x,),ln(1+x),realsqrt(x),非负实数组的平方根,log2(x),log,2,(x),sqrt(x),(复数)平方根,log10(x),常用对数,lg(x),nthroot(x,n),x,开,n,次方,,x,为实数,(,数组,),,,n,为正整数。,x,为负时,,n,必须为奇数,nextpow2,p = nextpow2(x),满足,2p = abs(x),取整函数和余数,round,4,舍,5,入到整数,fix,舍入到最接近,0,的整数,floor,舍入到最接近,的整数,ceil,舍入到最接近,的整数,mod,模,mod(X,Y),X - n.*Y,,,n = floor(X./Y),rem,余数,rem(X,Y),X - n.*Y,,,n = fix(X./Y),离散数学函数,factor,Prime factors,素因数(素因子),factorial,Factorial function,阶乘,gcd,Greatest common divisor,最大公约数,isprime,True for prime numbers,是否素数,lcm,Least common multiple,最小公倍数,primes(n),列出小于等于,n,的所有素数,rats,把小数形式化成两个整数的分数形式,Matlab,的输出格式,Matlab,中数的输出格式可以通过,format,命令指定,.,format 只改变变量的输出格式,但不会影响变量的值,!,格式,解释,例,format,同,short,3.1416,format short,4,位小数,3.1416,format long,14,位小数,3.14159265358979,format short e,短格式,e,方式(科学计数格式,),3.1416e+000,format long e,长格式,e,方式,,15,位小数,3.141592653589793e+000,format short g,短格式,g,方式,3.1416,format long g,长格式,g,方式,3.14159265358979,format bank,2,位小数,3.14,Format +,+,,,-,+,
展开阅读全文