资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第一讲,MATLAB,概述与运算基础,MATLAB,语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,自,1984,年由美国,MathWorks,公司推向市场以来,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。,MATLAB,功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。,MATLAB,程序组成及应用范围,MATLAB,程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、优化工具包、神经网络工具包、控制系统工具包、分析和综合工具包、样条工具包、符号数学工具包、图形处理工具包、统计工具包等。,MATLAB,是数值计算的先锋,它以矩阵作为基本数据单位,在应用线性代数、数理统计、自动控制、数学符号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。,MATLAB,在输入方面也很方便,可以使用内部的,Editor,或者其他任何字符处理器,同时它还可以与,word,结合在一起,在,word,的页面里直接调用,MATLAB,的大部分功能,使,word,具有特殊的计算能力。,一.MATLAB特点:,一,.MATLAB,特点,:,1.,数值计算和符号计算功能,MATLAB,的数值计算功能包括:矩阵运算、多项式和有理分式运算、数据统计分析、数值积分、优化处理等。符号计算将得到问题的,解析,解。,2.MATLAB,语言,MATLAB,除了命令行的交互式操作以外,还可以程序方式工作。使用,MATLAB,可以很容易地实现,C,或,FORTRAN,语言的几乎全部功能,包括,Windows,图形用户界面的设计。,3.,图形功能,MATLAB,提供了两个层次的图形命令:一种是对图形句柄进行的低级图形命令,另一种是建立在低级图形命令之上的高级图形命令。利用,MATLAB,的高级图形命令可以轻而易举地绘制二维、三维乃至四维图形,并可进行图形和坐标的标识、视角和光照设计、色彩精细控制等等。,4.,应用工具箱,基本部分和各种可选的工具箱。,基本部分中有数百个内部函数。,其工具箱分为两大类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、可视建模仿真功能及文字处理功能等。学科性工具箱专业性比较强,如控制系统工具箱、信号处理工具箱、神经网络工具箱、最优化工具箱、金融工具箱等,用户可以直接利用这些工具箱进行相关领域的科学研究。,二、操作桌面,缺省界面上层铺放着,3,个最常用的界面:指令窗、历史指令窗、工作空间浏览器,还有一个只能看到窗名的当前目录窗。在窗桌面的左下脚新增加了,【,开始,】,按钮。其他常用交互界面还有:工作空间浏览器、内存数组编辑器、交互界面分类目录窗、,M,文件编辑,/,调试器、帮助导航,/,浏览器。,(,1,)指令窗(,command window,),MATLAB,有很多使用方法,但最基本的是通过指令窗,(command window),这种界面。,(,2,)历史指令窗(,command history,),历史指令窗记录着用户在,MATLAB,指令窗中输入过的所有指令行。而所有这些被记录的指令行都能被复制或送到指令窗中再运行:单行或多行指令的复制和运行,生成,M,文件、历史命令的内容打印、使用查找对话框搜索历史窗口中的内容、设置历史命令的自动保存等,(,3,)当前目录窗(,current directory,),(,4,)工作空间浏览器(,workspace browser,),工作空间浏览器有多种功能,内存变量的查阅、保存、编辑、重命名、删除等,见表,4.5,。,除表中描述的工作空间浏览器的现场菜单操作以外,还可以在指令窗中使用指令来查阅、删除变量。,用,who,、,whos,指令查阅变量,用,clear,删除内存中的变量,a1,a2.,注意被删变量之间须用空格分隔。,变量和赋值语句,MATLAB,赋值语句有两种形式:,(1),变量,=,表达式,(2),表达式,其中“表达式”是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。,注第二种语句形式下,将表达式的值赋给,MATLAB,的永久变量,ans,。,如果在语句的最后加分号,那么,,MATLAB,仅仅执行赋值操作,不再显示运算的结果。在一条语句中,如果表达式太复杂,一行写不下,可以加上三个小黑点,(,续行符,),并按下回车键,然后接下去再写。例如,s=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8+1/9-1/10+1/11-1/12;,三,.MATLAB,运算量,MATLAB,表达式,算术表达式。,运算符有:,(,加,),、,(,减,),、*,(,乘,),、,/(,右除,),、,(,左除,),、,(,乘方,),对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。,关系表达式。,运算符有:,(,小于,),、,(,大于,),、,=(,大于或等于,),、,=(,等于,),、,=(,不等于,),逻辑表达式。,运算符有:,&(,与,),、,|(,或,),和,(,非,),三,.MATLAB,运算量,运算法则:,(1),在逻辑运算中,确认非零元素为真,用,1,表示,零元素为假,用,0,表示。,(2),参与逻辑运算的可以是两个标量,、,两个同维矩阵或参与逻辑运算的元素一个为标量,另一个为矩阵。,(,),在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。,三,.MATLAB,运算量,2.MATLAB,表达式,四,.,矩阵运算,矩阵是,MATLAB,最基本的数据对象,,MATLAB,的大部分运算或命令都是在矩阵运算的意义下执行的。在,MATLAB,中,不需对矩阵的维数和类型进行说明,,,MATLAB,会根据用户所输入的内容自动进行配置。,建立矩阵,建立矩阵可以用:直接输入法、利用函数建立矩阵和利用,M,文件建立矩阵。,直接输入法:,将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。,(,也可以用回车键代替分号,),例如,键入命令,:A=1 2 3;4 5 6;7 8 9,输出结果是:,A=1 2 3,4 5 6,7 8 9,四,.,矩阵运算,利用函数建立数值矩阵:,MATLAB,提供了许多生成和操作矩阵的函数,可以利用它们去建立矩阵。,例如,:reshape,函数和,diag,函数等。,reshape,函数用于建立数值矩阵。,diag,函数用于产生对角阵。,利用,M,文件建立矩阵,:对于比较大且比较复杂的矩阵,可以为它专门建立一个,M,文件。其步骤为:,第一步:使用编辑程序输入文件内容。,第二步:把输入的内容以纯文本方式存盘,(,设文件名为,mymatrix.m,),。,第三步:在,MATLAB,命令窗口中输入,mymatrix,,,就会自动建立一个名为,AM,的矩阵,可供以后显示和调用。,建立矩阵,四,.,矩阵运算,利用,M,文件建立矩阵:,对于比较大且比较复杂的矩阵,可以为它专门建立一个,M,文件。其步骤为:,第一步:使用编辑程序输入文件内容。,第二步:把输入的内容以纯文本方式存盘,(,设文件名为,mymatrix.m,),。,第三步:在,MATLAB,命令窗口中输入,mymatrix,,,就会自动建立一个名为,AM,的矩阵,可供以后显示和调用。,建立矩阵,四,.,矩阵运算,冒号表达式,在,MATLAB,中,冒号是一个重要的运算符。利用它可以产生向量,还可用来拆分矩阵。冒号表达式的一般格式是:,e1:e2:e3,其中,e1,为初始值,,e2,为步长,,e3,为终止值。冒号表达式可产生一个由,e1,开始到,e3,结束,以步长,e2,自增的行向量。,MATLAB,常用数学函数,MATLAB,提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。,例如:,A=1 2 3;4 5 6,B=fix(pi*A),C=,cos(pi,*B,),四,.,矩阵运算,矩阵的基本运算,()矩阵转置,()矩阵加和减,()矩阵乘法,()矩阵除法,Ab=inv(A)*b,(),矩阵的乘方,a2,四,.,矩阵运算,建立矩阵的函数,常用函数有:,eye(size(A),产生与,A,矩阵同阶的单位矩阵,zeros(m,n),产生,0,矩阵,ones(m,n),产生幺矩阵,rand(m,n),产生随机元素的矩阵,Size(a),返回包含两个元素的向量。,Length(a),返回向量的最大者。,数组运算,(,1,)数组的加和减,(,2,)数组的乘和除,(,3,)数组的乘方,四,.,矩阵运算,五应用举例,【,例,1】,求方程,x4+7x3+9x-20=0,的全部根。,在,MATLAB,命令窗口输入:,p=1,7,0,9,-20;%,建立多项式系数向量,x=roots(p)%,求根,得到的结果是:,x=,-7.2254,-0.4286+1.5405i,-0.4286-1.5405i,1.0826,第二讲:,M,文件,MATLAB,有两种工作方式:,交互式的命令行工作方式,M,文件的程序工作方式,一,.M,文件,一,.,M,文件,用,MATLAB,语言编写的程序,称为,M,文件。,M,文件有两类:命令文件和函数文件。,命令文件:没有输入参数,也不返回输出参数。即命令批处理文件,函数文件:可以输入参数,也可返回输出参数。,M,文件的建立与编辑,建立新的,M,文件:,从,MATLAB,命令窗口的,File,菜单中选择,New,菜单项,再选择,M-file,命令。,一,.,M,文件,编辑已有的,M,文件:,从,MATLAB,命令窗口的,Flie,菜单中选择,Open M-file,命令。,命令文件,将需要运行的命令编辑到一个命令文件中,然后在,MATLAB,命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。,【,例,1】,建立一个命令文件将变量,a,b,的值互换。,一,.,M,文件,e31,m,文件,:,a=1:9;,b=11,12,13;14,15,16;17,18,19;,c=a;a=b;b=c;,a,b,在,MATLAB,的命令窗口中输入,e31,,,将会执行该命令文件。,二数据的输入输出,1.input,函数:,用于向计算机输入一个参数。,调用格式:,A=input(,提示信息,选项,),;,注:,s,选项,则允许用户输入一个字符串。,例如想输入一个人的姓名,可采用命令,xm,=input(Whats your name:,s),【,例,2】,求一元二次方程,a,2,+,bx+c,=0,的根。,二数据的输入输出,a=input(a=?);,b=input(b=?);,c=input(c=?);,d=b*b-4*a*c;,x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a),将该程序以,aa.m,文件存盘,然后运行,aa.m,文件。,2,pause,函数,:,暂停程序的执行。,调用格式:,pause(,延迟秒数,),注:如果省略延迟时间,直接使用,pause,,,则将暂停程序,直到用户按任一键后程序继续执行。,二数据的输入输出,3,disp,函数:,命令窗口输出函数。,调用格式:,disp,(,输出项,),注:输出项为字符串或矩阵。,例如,A=Hello,MATLAB;,disp(A,),输出为:,Hello,MATLAB,三,MATLAB,控制流,计算机编程语言允许程序员根据某些判决结构来控制程序流的执行顺序。,MATLAB,提供了,5,种控制流的结构:,for,循环结构,,while,循环结构,,if-else-end,分支结构,,switch-case,结构,以及,try-catch,结构。,MATLAB,提供的这,5,种控制指令用法与其他语言十分类似。,四函数文件,函数文件是另一种形式的,M,文件,每一个函数文件都定义一个函数。事实上,,MATLAB,提供的标准函数大部分都是由函数文件定义的。,四,.,函数文件,1,函数文件格式,函数文件由,function,语句引导,其格式为:,function,输出形参表,=,函数名,(,输入形参表,),注释说明部分,函数体,注:其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于,1,个时,则应该用方括号括起来。,【,例,9】,编写函数文件求小于任意自然数,n,的,Fibonacci,数列各项。,function f=,ffib(n,),%,用于求,Fibonacci,数列的函数文件,%f=,ffib(n,),%1999,年,9,月,30,日编,f=1,1;,i=1;,while f(i)+f(i+1)n,f(i+2)=f(i)+f(i+1);,i=i+1;,end,将以上函数文件以文件名,ffib.m,存盘,然后在,MATLAB,命令窗口输入以下命令,可求小于,2 000,的,Fibonacci,数。,ffib(2000),四,.,函数文件,2,函数调用,函数文件编制好后,就可调用函数进行计算了。如上面定义,ffib,函数后,调用它求小于,2000,的,Fibonacci,数。,函数调用的一般格式是:,输出实参表,=,函数名,(,输入实参表,),四,.,函数文件,【,例,11】,利用函数的递归调用,求,n,!。,function f=factor(n),if n=1,f=1;,else,f=factor(n-1)*n;,end,return;%,返回,在命令文件,main2.m,中调用函数文件,factor.m,:,for i=1:10,fac(i,)=factor(i);,end,fac,程序运行结果是:,fac,=,Columns 1 through 6 1 2 6 24 120 720 Columns 7 through 10,504 40320 362880 3628800,四,.,函数文件,第三讲 绘图功能,作为一个功能强大的工具软件,,Matlab,具有很强的图形处理功能,提供了大量的二维、三维图形函数。由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面即常方便又高效。,4.1,二维图形,一、,plot,函数,函数格式,:,plot(x,y),其中,x,和,y,为坐标向量,函数功能,:以向量,x,、,y,为轴,绘制曲线。,【,例,1,】,在区间,0,X,2,内,绘制正弦曲线,Y=SIN,(,X,),,其程序为:,x=0:pi/100:2*pi;,y=sin(x);,plot(x,y),【,例,2,】,同时绘制正、余弦两条曲线,Y1=SIN,(,X,)和,Y2=COS,(,X,),,其程序为:,x=0:pi/100:2*pi;,y1=sin(x);,y2=,cos(x,);,plot(x,y1,x,y2),plot,函数还可以为,plot(x,y1,x,y2,,,x,y3,,,),形式,其功能是以公共向量,x,为,X,轴,分别以,y1,,,y2,,,y3,,,为,Y,轴,在同一幅图内绘制出多条曲线。,4.1,二维图形,一、,plot,函数,(一)线型与颜色,格式:,plot(x,y1,cs,.),其中,c,表示颜色,,s,表示线型。,4.1,二维图形,一、,plot,函数,【,例,3】,用不同线型和颜色重新绘制例,4.2,图形,其程序为:,x=0:pi/100:2*pi;,y1=sin(x);,y2=,cos(x,);,plot(x,y1,go,x,y2,b-.,),其中参数,go,和,b-.,表示图形的颜色和线型。,g,表示绿色,,o,表示图形线型为圆圈;,b,表示蓝色,,-.,表示图形线型为点划线。,(二)图形标记,在绘制图形的同时,可以对图形加上一些说明,如图形名称、图形某一部分的含义、坐标说明等,将这些操作称为添加图形标记。,title(,加图形标题,);,xlabel,(,加,X,轴标记,);,ylabel,(,加,Y,轴标记,);,text(X,Y,添加文本,);,4.1,二维图形,一、,plot,函数,(三)加图例,给图形加图例命令为,legend,。,该命令把图例放置在图形空白处,用户还可以通过鼠标移动图例,将其放到希望的位置。,格式,:,legend(,图例说明,图例说明,);,4.1,二维图形,一、,plot,函数,【,例,4,】,为正弦、余弦曲线增加图例,其程序为:,x=0:pi/100:2*pi;,y1=sin(x);,y2=,cos(x,);,plot(x,y1,x,y2,-);,legend(sin(x),cos(x,);,二维绘图函数小结,plot,二维图形基本函数,fplot,f(x),函数曲线绘制,fill,填充二维多边图形,polar,极坐标图,bar,条形图,loglog,双对数坐标图,semilogx,X,轴为对数的坐标图,semilogy,Y,轴为对数的坐标图,stairs,阶梯形图,axis,设置坐标轴,clf,清除图形窗口内容,close,关闭图形窗口,figure,创建图形窗口,grid,放置坐标网格线,gtext,用鼠标放置文本,hold,保持当前图形窗口内容,subplot,创建子图,text,放置文本,title,放置图形标题,xlabel,放置,X,轴坐标标记,ylabel,放置,Y,轴坐标标记,4.2,三维图形,一、,plot3,函数,最基本的三维图形函数为,plot3,,,它是将二维函数,plot,的有关功能扩展到三维空间,用来绘制三维图形。,函数格式:,plot3(x1,y1,z1,c1,x2,y2,z2,c2,),其中,x1,y1,z1,表示三维坐标向量,,c1,,,c2,表示线形或颜色。,函数功能:以向量,x,,,y,,,z,为坐标,绘制三维曲线。,【,例,9,】,绘制三维螺旋曲线,其程序为:,t=0:pi/50:10*pi;,y1=sin(t),y2=,cos(t,);,plot3(y1,y2,t);,title(helix),text(0,0,0,origin);,xlabel(sin(t),ylabel(cos(t),zlabel(t,);,grid;,4.4,三维图形,第七讲,MATLAB,的符号计算,所谓符号计算是指在运算时,无须事先对变量赋值,而将所得到结果以标准的符号形式来表示。,MathWorks,公司以,Maple,的内核作为符号计算引擎(,Engine,),,依赖,Maple,已有的函数库,开发了实现符号计算的两个工具箱:基本符号工具箱和扩展符号工具箱。,一、符号计算基础,定义符号变量,参与符号运算的对象可以是符号变量、符号表达式或符号矩阵。符号变量要先定义,后引用。可以用,sym,函数、,syms,函数将运算量定义为符号型数据。引用符号运算函数时,用户可以指定函数执行过程中的变量参数;若用户没有指定变量参数,则使用,findsym,函数默认的变量作为函数的变量参数。,sym,函数,sym,函数的主要功能是创建符号变量,以便进行符号运算,也可以用于创建符号表达式或符号矩阵。用,sym,函数创建符号变量的一般格式为:,x=,sym(x,),其目的是将,x,创建为符号变量,以,x,作为输出变量名。每次调用该函数,可以定义一个符号变量。,一、符号计算基础,【,例,11】,解代数方程:,a*x,2,-b*x-6=0,syms,a b x,solve(a*x2-b*x-6),ans,=,1/2/a*(b+(b2+24*a)(1/2),1/2/a*(b-(b2+24*a)(1/2),即该方程有两个根,:x,1,=1/2/a*(b+(b2+24*a)(1/2),;,x,2,=1/2/a*(b-(b2+24*a)(1/2),二、解方程,
展开阅读全文