1、第一讲 MATLAB概述与运算基础,MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,自1984年由美国 MathWorks 公司推向市场以来,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。,MATLAB程序组成及应用范围 MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、优化工具包、神经网络工具包、控制系统工具包、分析和综合工具包、样条工具包、符号数学工具包、图形处理工具包、统计工具包等。MATLAB是数值计算
2、的先锋,它以矩阵作为基本数据单位,在应用线性代数、数理统计、自动控制、数学符号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。MATLAB在输入方面也很方便,可以使用内部的Editor或者其他任何字符处理器,同时它还可以与word结合在一起,在word的页面里直接调用MATLAB 的大部分功能,使word具有特殊的计算能力。,一. MATLAB特点:,一. MATLAB特点:,1. 数值计算和符号计算功能MATLAB的数值计算功能包括:矩阵运算、多项式和有理分式运算、数据统计分析、数值积分、优化处理等。符号计算将得到问题的解析解。,2.MAT
3、LAB语言MATLAB除了命令行的交互式操作以外,还可以程序方式工作。使用MATLAB可以很容易地实现C或FORTRAN语言的几乎全部功能,包括Windows图形用户界面的设计。,3.图形功能 MATLAB提供了两个层次的图形命令:一种是对图形句柄进行的低级图形命令,另一种是建立在低级图形命令之上的高级图形命令。利用MATLAB的高级图形命令可以轻而易举地绘制二维、三维乃至四维图形,并可进行图形和坐标的标识、视角和光照设计、色彩精细控制等等。,4.应用工具箱 基本部分和各种可选的工具箱。 基本部分中有数百个内部函数。其工具箱分为两大类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号
4、计算功能、可视建模仿真功能及文字处理功能等。学科性工具箱专业性比较强,如控制系统工具箱、信号处理工具箱、神经网络工具箱、最优化工具箱、金融工具箱等,用户可以直接利用这些工具箱进行相关领域的科学研究。,二、操作桌面缺省界面上层铺放着3个最常用的界面:指令窗、历史指令窗、工作空间浏览器,还有一个只能看到窗名的当前目录窗。在窗桌面的左下脚新增加了【开始】按钮。其他常用交互界面还有:工作空间浏览器、内存数组编辑器、交互界面分类目录窗、M文件编辑/调试器、帮助导航/浏览器。,(1)指令窗(command window) MATLAB有很多使用方法,但最基本的是通过指令窗(command window)这
5、种界面。 (2)历史指令窗(command history) 历史指令窗记录着用户在MATLAB指令窗中输入过的所有指令行。而所有这些被记录的指令行都能被复制或送到指令窗中再运行:单行或多行指令的复制和运行,生成M文件、历史命令的内容打印、使用查找对话框搜索历史窗口中的内容、设置历史命令的自动保存等 (3)当前目录窗(current directory) (4)工作空间浏览器(workspace browser) 工作空间浏览器有多种功能,内存变量的查阅、保存、编辑、重命名、删除等,见表4.5。除表中描述的工作空间浏览器的现场菜单操作以外,还可以在指令窗中使用指令来查阅、删除变量。用who 、
6、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
7、-1/12;,三. MATLAB运算量,MATLAB表达式 算术表达式。 运算符有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方) 对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。 关系表达式。 运算符有:(大于)、=(大于或等于)、=(等于)、=(不等于) 逻辑表达式。 运算符有:&(与)、|(或)和(非),三. MATLAB运算量,运算法则:(1)在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。(2)参与逻辑运算的可以是两个标量、两个同维矩阵或参与逻辑运算的元素一个为标量,另一个为矩阵。()在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优
8、先级最低。,三. MATLAB运算量,2. MATLAB表达式,四. 矩阵运算,矩阵是MATLAB最基本的数据对象,MATLAB的大部分运算或命令都是在矩阵运算的意义下执行的。在MATLAB中,不需对矩阵的维数和类型进行说明,MATLAB会根据用户所输入的内容自动进行配置。 建立矩阵建立矩阵可以用:直接输入法、利用函数建立矩阵和利用M文件建立矩阵。 直接输入法:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。(也可以用回车键代替分号) 例如,键入命令: A=1 2 3;4 5 6;7 8 9 输出结果是: A = 1 2 3
9、4 5 67 8 9,四. 矩阵运算,利用函数建立数值矩阵:MATLAB提供了许多生成和操作矩阵的函数,可以利用它们去建立矩阵。 例如:reshape函数和diag函数等。 reshape函数用于建立数值矩阵。 diag函数用于产生对角阵。,利用M文件建立矩阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。其步骤为: 第一步:使用编辑程序输入文件内容。 第二步:把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。 第三步:在MATLAB命令窗口中输入mymatrix,就会自动建立一个名为AM的矩阵,可供以后显示和调用。,建立矩阵,四. 矩阵运算,利用M文件建立矩阵:对于比
10、较大且比较复杂的矩阵,可以为它专门建立一个M文件。其步骤为: 第一步:使用编辑程序输入文件内容。第二步:把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。第三步:在MATLAB命令窗口中输入mymatrix,就会自动建立一个名为AM的矩阵,可供以后显示和调用。,建立矩阵,四. 矩阵运算,冒号表达式在MATLAB中,冒号是一个重要的运算符。利用它可以产生向量,还可用来拆分矩阵。冒号表达式的一般格式是:e1:e2:e3其中e1为初始值,e2为步长,e3为终止值。冒号表达式可产生一个由e1开始到e3结束,以步长e2自增的行向量。,MATLAB常用数学函数MATLAB提供了许多数学函数,
11、函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。 例如: 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)
12、返回向量的最大者。,数组运算 (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.5405i1.0826,第二讲: M文件,MATLAB有两种工作方式:,交互式的命令行工作方式,M文件的程序工作方式,一. M文件,一. M文件,用MATLAB语言编写的程序,称为M文件。M文件有两类:命令文件和函数文
13、件。命令文件:没有输入参数,也不返回输出 参数。即命令批处理文件 函数文件:可以输入参数,也可返回输出参数。,M文件的建立与编辑,建立新的M文件:从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。,一. M文件,编辑已有的M文件:从MATLAB命令窗口的Flie菜单中选择Open M-file命令。,命令文件,将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。 【例1】 建立一个命令文件将变量a,b的值互换。,一. M文件,e31m文件: a=1:9;b=11,12,13;14,15,16;17,1
14、8,19;c=a;a=b;b=c;ab 在MATLAB的命令窗口中输入e31,将会执行该命令文件。,二数据的输入输出,1. input函数:用于向计算机输入一个参数。 调用格式: A=input(提示信息,选项); 注:s选项,则允许用户输入一个字符串。 例如想输入一个人的姓名,可采用命令xm=input(Whats your name:,s) 【例2】 求一元二次方程a2 +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) 将该
15、程序以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分支结
16、构,switch-case结构,以及try-catch结构。MATLAB提供的这5种控制指令用法与其他语言十分类似。,四函数文件,函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。事实上,MATLAB提供的标准函数大部分都是由函数文件定义的。,四. 函数文件,1函数文件格式,函数文件由function语句引导,其格式为:function 输出形参表=函数名(输入形参表)注释说明部分函数体 注:其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。,【例9】 编写函数文件求小于任意自然数n的Fibonacci数
17、列各项。,function f=ffib(n)%用于求Fibonacci数列的函数文件%f=ffib(n)%1999年9月30日编f=1,1;i=1;while f(i)+f(i+1)nf(i+2)=f(i)+f(i+1);i=i+1;end,将以上函数文件以文件名ffib.m存盘,然后在MATLAB命令窗口输入以下命令,可求小于2 000的Fibonacci数。ffib(2000),四. 函数文件,2函数调用,函数文件编制好后,就可调用函数进行计算了。如上面定义ffib函数后,调用它求小于2000的Fibonacci数。 函数调用的一般格式是:输出实参表=函数名(输入实参表),四. 函数文件
18、,【例11】 利用函数的递归调用,求n!。,function f=factor(n)if n=1f=1;elsef=factor(n-1)*n;endreturn; %返回在命令文件main2.m中调用函数文件factor.m:for i=1:10fac(i)=factor(i);endfac,程序运行结果是:fac =Columns 1 through 6 1 2 6 24 120 720 Columns 7 through 10 504 40320 362880 3628800,四. 函数文件,第三讲 绘图功能,作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供了大量的二
19、维、三维图形函数。由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面即常方便又高效。,4.1 二维图形,一、 plot函数 函数格式:plot(x,y) 其中x和y为坐标向量 函数功能:以向量x、y为轴,绘制曲线。 【例1】 在区间0X2内,绘制正弦曲线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,y
20、1,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表示蓝色,-.表示图形线型为点划线。,(二)图形标记
21、 在绘制图形的同时,可以对图形加上一些说明,如图形名称、图形某一部分的含义、坐标说明等,将这些操作称为添加图形标记。 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(
22、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 放置文本
23、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),te
24、xt(0,0,0,origin); xlabel(sin(t),ylabel(cos(t),zlabel(t); grid;,4.4 三维图形,第七讲 MATLAB的符号计算,所谓符号计算是指在运算时,无须事先对变量赋值,而将所得到结果以标准的符号形式来表示。MathWorks公司以Maple的内核作为符号计算引擎(Engine),依赖Maple已有的函数库,开发了实现符号计算的两个工具箱:基本符号工具箱和扩展符号工具箱。,一、符号计算基础,定义符号变量参与符号运算的对象可以是符号变量、符号表达式或符号矩阵。符号变量要先定义,后引用。可以用sym函数、syms函数将运算量定义为符号型数据。引用
25、符号运算函数时,用户可以指定函数执行过程中的变量参数;若用户没有指定变量参数,则使用findsym函数默认的变量作为函数的变量参数。,sym函数sym函数的主要功能是创建符号变量,以便进行符号运算,也可以用于创建符号表达式或符号矩阵。用sym函数创建符号变量的一般格式为:x = sym(x)其目的是将x创建为符号变量,以x作为输出变量名。每次调用该函数,可以定义一个符号变量。,一、符号计算基础,【例11】解代数方程:a*x2-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) 即该方程有两个根: x1=1/2/a*(b+(b2+24*a)(1/2);x2=1/2/a*(b-(b2+24*a)(1/2),二、解方程,