1、MATLAB基础及其在数学建模中的应用工欲善其事,必先利其器工欲善其事,必先利其器讲座目标v初步了解MATLAB;v掌握其相关规则、常用函数;v能进行简单的画图、计算;v能解决一些现实问题。目录目录 MATLAB简介 MATLAB 数据类型 基本命令 数学函数 简单语句 图形操作 常见作图函数 符号表达式与数值计算 应用举例1、MATLAB简介简介MATLAB是MAtrix LABoratory(矩阵实验室)的缩写;MATLAB是美国新墨西哥大学Clever Moler博士首创,采用FORTRAN语言编写,其初衷是解决线性代数课程中繁琐的矩阵运算。20世纪80年代后出现了MATLAB的第二版,
2、全部采用C语言编写;1984年Moler博士和一批数学家及软件专家创建了MathWorks公司,专门开发MATLAB。1、MATLAB简介简介MATLAB可以进行 数学计算、算法开发、数据采集;建模、仿真;数据分析、开发和可视化;科学和工程图形应用程序的开发,包括图形用户界面的创建。1、MATLAB简介简介MATLAB的主要应用领域(1)数值分析;(2)数值和符号计算;(3)工程与科学绘图;(4)控制系统的设计与仿真;(5)数字图像处理;(6)数字信号处理;(7)通讯系统设计与仿真;(8)财务与金融工程。1、MATLAB简介简介MATLAB优势强大易用的科学计算语言;全面的图形功能;独立开放的
3、平台;实用的程序接口。1、MATLAB简介简介命令窗口(Command Window)工作空间管理窗口(Workspace)历史命令窗口(Command History)MATLAB主要窗口主要窗口 1、MATLAB简介简介 命令窗口命令窗口 命令窗口位于MATLAB默认桌面的中间,显示命令提示符为“”,可在“”之后输入命令,按下Enter键后MATLAB会立即显示结果并将结果自动赋予变量ans,例如:(3.14*32+3)/2 ans=15.6300知识点:知识点:一、变一、变 量量 与与 函函 数数二、数二、数 组组三、三、矩矩 阵阵四、四、MATLAB编程编程*五、五、MATLAB绘图绘
4、图 1、变量、变量 MATLAB中变量的命名规则命名规则是:(1)变量名必须是不含空格的单个词;(2)变量名区分大小写;(3)变量名最多不超过32个字符;(4)变量名必须以字母打头,之后可以是 任意字母、数字或下划线,变量名中 不允许使用标点符号.一、变一、变 量量 与与 函函 数数特殊变量取 值ans用于结果的缺省变量名pi圆周率eps计算机的最小数,当和 1 相加就产生一个比1大的数flops浮点运算数inf无穷大,如 1/0NaN不定量,如 0/0i,ji=j=1nargin所用函数的输入变量数目nargout所用函数的输出变量数目realmin最小可用正实数realmax最大可用正实数
5、特殊变量表特殊变量表2、数学运算符号及标点符号、数学运算符号及标点符号+加法运算,适用于两个数或两个同阶矩阵相加.减法运算*乘法运算.*点乘运算/除法运算./点除运算乘幂运算.点乘幂运算反斜杠表示左除.(1)MATLAB的每条命令后,若为逗号逗号或或无标点无标点符号,则显示命令的结果;若命令后为分号分号,则禁止显示结果.(2)“%”后面所有文字为注释.(3)“.”表示续行.3赋值语句(1)变量=表达式 (2)表达式其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。变量的赋值 实数赋值 x=5 复数赋值 x=5+10j (或或 x=5+10i)向量的赋值 行向量赋值:x=1 2
6、3(或或 x=1,2,3)列向量赋值:y=1;2;3 矩阵的赋值:x=1 2 3;4 5 6;7 8 9例1 计算表达式的值,并显示计算结果。在MATLAB命令窗口输入命令:x=1+2i;y=3-sqrt(17);z=(cos(abs(x+y)-sin(78*pi/180)/(x+abs(y)其中pi和i都是MATLAB预先定义的变量,分别代表代表圆周率和虚数单位。输出结果是:z=-0.3488+0.3286i函 数名 称函 数名 称sin(x)正弦函数asin(x)反正弦函数cos(x)余弦函数acos(x)反余弦函数tan(x)正切函数atan(x)反正切函数abs(x)绝对值max(x)
7、最大值min(x)最小值sum(x)元素的总和sqrt(x)开平方exp(x)以 e为底的指数log(x)自然对数)(log10 x以 10 为底的对数sign(x)符号函数fix(x)取整4、数学函数、数学函数获得帮助获得帮助 如果你知道一个函数名,想了解它的用法,你可以用“help”命令得到它的帮助文档:help functionname 如果你了解含某个关键词的函数,你可以用lookfor命令得到相关的函数:lookfor keyword vhelp 显示help 主题一览表vhelp help 显示help 的帮助信息v虽然help可以随时提供帮助,但必须知道准确的函数名称。当不能确定
8、函数名称时,help就无能为力了。2lookfor命令vhelp命令只搜索出那些关键字完全匹配的结果,lookfor命令对搜索范围内的M文件进行关键字搜索,条件比较宽松。lookfor命令只对M文件的第一行进行关键字搜索。若在lookfor命令加上-all选项,则可对M文件进行全文搜索。3模糊查询vMatlab 6.0以上的版本提供了一种类似模糊查询的命令查询方法,用户只需要输入命令的前几个字母,然后按Tab键,系统就会列出所有以这几个字母开头的命令。MATLAB的内部函数是有限的,有时为了研究某一个函数的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为的各种性态,需要为MATLAB
9、定义新函数,为此必须编写函数定义新函数,为此必须编写函数文件文件.函数文件是文件名后缀为函数文件是文件名后缀为M的文件,这类文件的的文件,这类文件的第一行第一行必须是一特殊字符必须是一特殊字符function开始开始,格式为:,格式为:function 因变量名因变量名=函数名(自变量名)函数名(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变量函数值的获得必须通过具体的运算实现,并赋给因变量.5、M文件文件M文件建立方法:文件建立方法:1.在在Matlab中,点中,点:File-New-M-file 2.在编辑窗口中输入程序内容在编辑窗口中输入程序内容 3.点:点:File-Save
10、,存盘,存盘,M文件名必须文件名必须 与函数名一致。与函数名一致。Matlab的应用程序也以的应用程序也以M文件保存。文件保存。新建M文件Run例例2:定义函数:定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)2function f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)21.建立建立M文件:文件:fun.m2.可以直接使用函数可以直接使用函数fun.m例如:计算例如:计算 f(1,2),只需在只需在Matlab命令窗口键入命令:命令窗口键入命令:x=1 2fun(x)返回返回x=logspace(first,last,n)创建从开始,到结束,有n
11、个元素的对数分隔行向量.1、创建简单的数组、创建简单的数组二、数二、数 组组x=a b c d e f 创建包含指定元素的行向量x=first:last 创建从first开始,加1计数,到last结束的行向量x=first:increment:last 创建从first开始,加increment计数,last结束的行向量x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量 2、数组元素的访问数组元素的访问(3)直接使用元素编址序号直接使用元素编址序号.x(a b c d)表示提取数组x的第a、b、c、d个元素构成一个新的数组x(a)x(b)x
12、(c)x(d).(2)访问一块元素访问一块元素:x(a:b:c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.(1)访问一个元素访问一个元素:x(i)表示访问数组x的第i个元素.3 3、数组的方向、数组的方向 前面例子中的数组都是一行数列,是行方向分布的前面例子中的数组都是一行数列,是行方向分布的.称之为称之为行向量行向量.数组也可以是数组也可以是列向量列向量,它的数组操作和运,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示算与行向量是一样的,唯一的区别是结果以列形式显示.产生列向量有两种方法:产生列向量有两种方法:直接产
13、生直接产生 例例 c=1;2;3;4 转置产生转置产生 例例 b=1 2 3 4;c=b 说明:以说明:以空格空格或或逗号逗号分隔的元素指定的是不同列的分隔的元素指定的是不同列的元素,而以元素,而以分号分号分隔的元素指定了不同行的元素分隔的元素指定了不同行的元素.4、数组的运算、数组的运算 (1)标量)标量-数组运算数组运算 数组对标量的加、减、乘、除、乘方是数组的每个数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算元素对该标量施加相应的加、减、乘、除、乘方运算.设:设:a=a1,a2,an,c=标量标量则:则:a+c=a1+c,a2+c,an+c a
14、.*c=a1*c,a2*c,an*c (=a*c)a./c=a1/c,a2/c,an/c (右除,右除,从右到左斜从右到左斜/)a.c=c/a1,c/a2,c/an (左除,左除,从左到右斜从左到右斜)a.c=a1c,a2c,anc c.a=ca1,ca2,can(2)数组数组-数组运算数组运算 当两个数组有相同维数时,加、减、乘、除、当两个数组有相同维数时,加、减、乘、除、幂运算可按幂运算可按元素对元素元素对元素方式进行的,不同大小或维方式进行的,不同大小或维数的数组是不能进行运算的数的数组是不能进行运算的.设:设:a=a1,a2,an,b=b1,b2,bn则:则:a+b=a1+b1,a2+
15、b2,an+bn a.*b=a1*b1,a2*b2,an*bn a./b=a1/b1,a2/b2,an/bn a.b=b1/a1,b2/a2,bn/an a.b=a1b1,a2b2,anbn 返回返回三、三、矩矩 阵阵 逗号逗号或或空格空格用于分隔某一行的元素,用于分隔某一行的元素,分号分号用于区分不用于区分不同的行同的行.除了分号,在输入矩阵时,按除了分号,在输入矩阵时,按Enter键也表示开始键也表示开始一新行一新行.输入矩阵时,严格要求所有行有相同的列输入矩阵时,严格要求所有行有相同的列.例例 m=1 2 3 4;5 6 7 8;9 10 11 12 p=1 1 1 1 2 2 2 2
16、3 3 3 31、矩阵的建立、矩阵的建立特殊矩阵特殊矩阵的建立:.d=eye(m,n)产生一个产生一个m行、行、n列的单位矩阵列的单位矩阵c=ones(m,n)产生一个产生一个m行、行、n列的元素列的元素 全为全为1的矩阵的矩阵b=zeros(m,n)产生一个产生一个m行、行、n列的零矩阵列的零矩阵a=产生一个空矩阵,当对一项操作无结产生一个空矩阵,当对一项操作无结 果时,返回空矩阵,空矩阵的大小为零果时,返回空矩阵,空矩阵的大小为零.2、矩阵中元素的操作、矩阵中元素的操作(1)矩阵)矩阵A的第的第r行:行:A(r,:),:)(:就是所有的就是所有的)(2)矩阵)矩阵A的第的第r列:列:A(:
17、,(:,r)(4)取矩阵)取矩阵A的第的第i1i2行、第行、第j1j2列构成新矩阵列构成新矩阵:A(i1:i2,j1:j2)(5)以逆序提取矩阵)以逆序提取矩阵A的第的第i1i2行,构成新矩阵行,构成新矩阵:A(i2:-1:i1,:),:)(6)以逆序提取矩阵)以逆序提取矩阵A的第的第j1j2列,构成新矩阵列,构成新矩阵:A(:,j2:-1:j1)(7)删除)删除A的第的第i1i2行,构成新矩阵行,构成新矩阵:A(i1:i2,:,:)=(8)删除)删除A的第的第j1j2列,构成新矩阵列,构成新矩阵:A(:,:,j1:j2)=(9)将矩阵)将矩阵A和和B拼接成新矩阵:拼接成新矩阵:A B;A;B
18、(3)依次提取矩阵)依次提取矩阵A的每一列,将的每一列,将A拉伸为一个列向量:拉伸为一个列向量:A(:)(:)(2)矩阵)矩阵-矩阵运算矩阵运算 1 元素对元素元素对元素的运算,同数组的运算,同数组-数组运算。数组运算。3、矩阵的运算、矩阵的运算(1)标量)标量-矩阵运算矩阵运算 同标量同标量-数组运算。数组运算。2矩阵运算:矩阵运算:矩阵加法:矩阵加法:A+B矩阵乘法:矩阵乘法:A*B (保证可乘才行,(保证可乘才行,A的列数的列数=B的行数;的行数;点乘是要求点乘是要求A与与B同型)同型)方阵的行列式:方阵的行列式:det(A)方阵的逆:方阵的逆:inv(A)方阵的特征值与特征向量:方阵的
19、特征值与特征向量:V,D=eigA 返回返回关系与逻辑运算关系与逻辑运算 1、关系操作符、关系操作符关关系系操操作作符符说说明明小小于于大大于于=大大于于或或等等于于=等等于于=不不等等于于2、逻辑运算符逻辑运算符逻辑操作符逻辑操作符说明说明与与或或非非矩阵的行列操作 A=1,2,3;4,5,6;7,8,9A=1 2 3 4 5 6 7 8 9A(2,2)ans=5矩阵操作矩阵的行列操作 A=1 2 3;4 5 6;7 8 9 A(1,:)ans=1 2 3 A(:,1)ans=1 4 7矩阵的行列操作 A=1 2 3;4 5 6;7 8 9 A(2:3,1:2)ans=4 5 7 8 A(1
20、,1)=10A=10 2 3 4 5 6 7 8 9常用的矩阵 名 称 调用格式zeros zeros(n)或zeros(n,m)ones ones(n)或ones(n,m)eye eye(n)或eye(n,m)矩阵运算v +两矩阵相加v -两矩阵相减v *两矩阵相乘v /右除v 左除v 乘方v 转置数组运算v +两数组相加v -两数组相减v .*两数组相乘v ./对应元素相除v .乘方 A=1,2,3;4,5,6;7,8,9 A.*A%(点乘:对应元素分别相乘)(点乘:对应元素分别相乘)ans=1 4 9 16 25 36 49 64 81注意以下操作结果的区别 A=1,2,3;4,5,6;
21、7,8,9 A*Aans=30 36 42 66 81 96 102 126 150 mean(A)ans=4 5 6%(默认是对各列分别求平均(默认是对各列分别求平均)x=1,2,3 mean(x)ans=2常用函数:meansumsort注意:若这些函数作用在矩阵上,其默认状态是对列操作示例:x=linspace(0,pi,10)%(从(从0到到,平均往上增加,平均往上增加,共,共10个数)个数)x=0 0.3491 0.6981 1.0472 1.3963 1.7453 2.0944 2.4435 2.7925 3.1416 sin(x)ans=0 0.3420 0.6428 0.866
22、0 0.9848 0.9848 0.8660 0.6428 0.3420 0.00001、for循环:循环:允许一组命令以固定的和预定的次数重复允许一组命令以固定的和预定的次数重复 for x=array commands end 在在for和和end语句之间的命令串语句之间的命令串commands按数组(按数组(array)中)中的每一列执行一次的每一列执行一次.在每一次迭代中,在每一次迭代中,x被指定为数组的下一列,即被指定为数组的下一列,即在第在第n次循环中,次循环中,x=array(:,:,n)控制流控制流MATLAB提供三种决策或控制流结构:提供三种决策或控制流结构:for循环、循环
23、、while循环、循环、if-else-end结构结构.这些结构经常包含大量的这些结构经常包含大量的MATLAB命令,故经常出现在命令,故经常出现在MATLAB程序中,而不是直接加在程序中,而不是直接加在MATLAB提示符下提示符下.例例 对对n=1,2,10,求求xn=的值的值10sinn代码:n=1:10;xn=sin(n*pi./10);%或xn=sin(n.*pi./10);plot(n,xn)while expression commands end 只要在表达式只要在表达式(expression)里的所有元素为真,就执行里的所有元素为真,就执行while和和end语句之间的命令串语
24、句之间的命令串commands.2、While循环循环 与与for循环以固定次数求一组命令相反,循环以固定次数求一组命令相反,while循环以不定的次循环以不定的次数求一组语句的值数求一组语句的值.例例 设银行年利率为设银行年利率为11.25%。将。将10000元钱存入银行,元钱存入银行,问多长时间会连本带利翻一番?问多长时间会连本带利翻一番?money=10000;years=0;while money1 f=x2+1endif x1 f=x2+1else if x factorial(100)ans=9.3326e+157简单作图简单作图绘制sin和cos曲线。x=-2*pi:0.05:2
25、*pi;y1=sin(x);y2=cos(x);plot(x,y1,-b,x,y2,-m);%-表示实线,表示实线,m表示品红色表示品红色-8-6-4-202468-1-0.8-0.6-0.4-0.200.20.40.60.81-8-6-4-202468-1-0.8-0.6-0.4-0.200.20.40.60.81sinx and cosxxyzero sincostitle(sinx and cosx);xlabel(x);ylabel(y);text(0,0,zero);legend(sin,cos)grid on%加网格加网格图形控制图形控制坐标控制:axis ylim ylim 网格
26、控制:grid on/off grid minor 多子图:subplot 补 充:xlabel ylabel linewidth makersize 图形控制图形控制多子图:subplot(m,n,i)subplot(2,2,1)fplot(sin(x),-pi,pi)subplot(2,2,2)fplot(cos(x),-pi,pi)subplot(2,2,3)fplot(tan(x),-pi,pi)subplot(2,2,4)fplot(cot(x),-pi,pi)-202-1-0.500.51-202-1-0.500.51-202-10-505x 1013-202-1-0.500.51
27、x 1016作图函数作图函数 fplot f函数图函数图 polar 极坐标图极坐标图 bar 柱状图柱状图 pie 饼状图饼状图作图函数作图函数fplot fplot(sin(x),-pi,pi)-3-2-10123-1-0.8-0.6-0.4-0.200.20.40.60.81作图函数作图函数polar t=0:0.01:4*pi;s=abs(sin(2*t).*cos(2*t);polar(t,s,r)0.1 0.2 0.3 0.4 0.53021060240902701203001503301800作图函数作图函数bar p=21 15 41 10 8 8 3 6 2 30;t=0:9
28、;bar(t,p)0123456789051015202530354045作图函数作图函数pie x=59 15 15 10 8 8 8;pie(x);48%12%12%8%7%7%7%二维图形二维图形三维图形三维图形图形处理图形处理 Matlab作图是通过描点、连线来实现的,故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标和纵坐标),然后将该点集的坐标传给Matlab函数画图.命令为:PLOT(X,Y,S)PLOT(X,Y)-画实线PLOT(X,Y1,S1,X,Y2,S2,X,Yn,Sn)-将多条线画在一起X,Y是向量,分别表示点集的横坐标和纵坐标线型y 黄色黄色 .点
29、点 -连线连线m 洋红洋红 o 圈圈 :短虚线短虚线c 蓝绿色蓝绿色 x x-符号符号 -.长短线长短线 r 红色红色 +加号加号 -长虚线长虚线1.曲线图曲线图例 在在0,2*pi用红线画用红线画sin(x),用绿圈画用绿圈画cos(x).x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,r,x,z,go)解解2.符号函数符号函数(显函数、隐函数和参数方程显函数、隐函数和参数方程)画图画图(1)ezplotezplot(x(t),y(t),tmin,tmax)表示在区间tminttmax绘制参数方程 x=x(t),y=y(t)的函数图ezplo
30、t(f(x),a,b)表示在axb绘制显函数f=f(x)的函数图ezplot(f(x,y),xmin,xmax,ymin,ymax)表示在区间xminxxmax和 yminyymax绘制隐函数f(x,y)=0的函数图例例 在0,pi上画y=cos(x)的图形解解 输入命令 ezplot(sin(x),0,pi)解解 输入命令 ezplot(cos(t)3,sin(t)3,0.2*pi)例例 在-2,0.5,0,2上画隐函数0)sin(xyex的图解解 输入命令ezplot(exp(x)+sin(x*y),-2,0.5,0,2)例例 在0,2*pi上画tx3cos,ty3sin星形图(2)fpl
31、ot注意:1 fun必须是M文件的函数名或是独立变量为x的字符串.2 fplot函数不能画参数方程和隐函数图形,但在一个图上可以画多个图形。fplot(fun,lims)表示绘制字符串fun指定的函数在lims=xmin,xmax的图形.例例 在-1,2上画)3sin(22xeyx的 图形解解 先建M文件myfun1.m:function Y=myfun1(x)Y=exp(2*x)+sin(3*x.2)再输入命令:fplot(myfun1,-1,2)例例 x、y 的取值范围都在-2,2,画函数 tanh(x),sin(x),cos(x)的图形 解解 输入命令:fplot(tanh(x),sin
32、(x),cos(x),2*pi*-1 1 1 1)例例 在-2,2范围内绘制函数tanh的图形解解 fplot(tanh,-2,2)3.对数坐标图对数坐标图 在很多工程问题中,通过对数据进行对数转换可以更清晰地看出数据的某些特征,在对数坐标系中描绘数据点的曲线,可以直接地表现对数转换.对数转换有双对数坐标转换和单轴对数坐标转换两种.用loglog函数可以实现双对数坐标转换,用semilogx和semilogy函数可以实现单轴对数坐标转换.loglog(Y)表示 x、y坐标都是对数坐标系semilogx(Y)表示 x坐标轴是对数坐标系semilogy()表示y坐标轴是对数坐标系plotyy 有两
33、个y坐标轴,一个在左边,一个在右边例例 用方形标记创建一个简单的loglog解解 输入命令:x=logspace(-1,2);loglog(x,exp(x),-s)grid on%标注格栅例例 创建一个简单的半对数坐标图解解 输入命令:x=0:.1:10;semilogy(x,10.x)返回三维图形三维图形1、空间曲线空间曲线2、空间曲面空间曲面返回PLOT3(x,y,z,s)空空 间间 曲曲 线线 1、一条曲线一条曲线 例例 在区间0,10*pi画出参数曲线x=sin(t),y=cos(t),z=t.解解 t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)rotat
34、e3d%旋转n维向量,分别表示曲线上点集的横坐标、纵坐标、函数值指定颜色、线形等 PLOT3(x,y,z)2、多条曲线多条曲线例 画多条曲线观察函数Z=(X+Y).2.(这里meshgrid(x,y)的作用是产生一个以向量x为行、向量y为列的矩阵)其中x,y,z是都是m*n矩阵,其对应的每一列表示一条曲线.解 x=-3:0.1:3;y=1:0.1:5;X,Y=meshgrid(x,y);Z=(X+Y).2;plot3(X,Y,Z)返回空空 间间 曲曲 面面例 画函数Z=(X+Y).2的图形.解 x=-3:0.1:3;y=1:0.1:5;X,Y=meshgrid(x,y);Z=(X+Y).2;s
35、urf(X,Y,Z)shading flat%将当前图形变得平滑(1)surf(x,y,z)画出数据点(x,y,z)表示的曲面数据矩阵。分别表示数据点的横坐标、纵坐标、函数值(2)Mesh(x,y,z)解 x=-3:0.1:3;y=1:0.1:5;X,Y=meshgrid(x,y);Z=(X+Y).2;mesh(X,Y,Z)例 画出曲面Z=(X+Y).2在不同视角的网格图.画网格曲面数据矩阵。分别表示数据点的横坐标、纵坐标、函数值(3)meshz(X,Y,Z)在网格周围画一个curtain图(如,参考平面)解解 输入命令:X,Y=meshgrid(-3:.125:3);Z=praks(X,Y)
36、;Meshz(X,Y,Z)例例 绘peaks的网格图返回在图形上加格栅、图例和标注在图形上加格栅、图例和标注定制坐标定制坐标图形保持图形保持分割窗口分割窗口缩放图形缩放图形改变视角改变视角图形处理返回动动 画画1、在图形上加格栅、图例和标注(1)GRID ON:加格栅在当前图上 GRID OFF:删除格栅删除格栅处理图形处理图形(2)hh=xlabel(string):在当前图形的x轴上加图例stringhh=ylabel(string):在当前图形的y轴上加图例stringhh=title(string):在当前图形的顶端上加图例stringhh=zlabel(string):在当前图形的z
37、轴上加图例string例例 在区间0,2*pi画sin(x)的图形,并加注图例“自变量 X”、“函数Y”、“示意图”,并加格栅.解解 x=linspace(0,2*pi,30);y=sin(x);plot(x,y)xlabel(自变量X)ylabel(函数Y)title(示意图)grid on(3)hh=gtext(string)命令命令gtext(string)用鼠标放置标注在现有的图上用鼠标放置标注在现有的图上.运行命令运行命令gtext(string)时,屏幕上出现当前图形,在时,屏幕上出现当前图形,在图形上出现一个交叉的十字,该十字随鼠标的移动移动,图形上出现一个交叉的十字,该十字随鼠
38、标的移动移动,当按下鼠标左键时,该标注当按下鼠标左键时,该标注string放在当前十交叉的位放在当前十交叉的位置置.例例 在区间0,2*pi画sin(x),并分别标注“sin(x)”cos(x)”.解解 x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,x,z)gtext(sin(x);gtext(cos(x)返回2、定制坐标、定制坐标Axis(xmin xmax ymin ymax zmin zmax)例例 在区间0.005,0.01显示sin(1/x)的图形。解解 x=linspace(0.0001,0.01,1000);y=sin(1./x
39、);plot(x,y)axis(0.005 0.01 1 1)返回定制图形坐标将坐标轴返回到自动缺省值Axis autox、y、z的最大、最小值3、图形保持、图形保持(1)hold on hold of例例 将y=sin(x)、y=cos(x)分别用点和线画出在同一屏幕上。解解 x=linspace(0,2*pi,30);y=sin(x);z=cos(x)plot(x,z,:)hold on Plot(x,y)保持当前图形,以便继续画图到当前图上释放当前图形窗口(2)figure(h)例例 区间0,2*pi新建两个窗口分别画出y=sin(x);z=cos(x)。解解 x=linspace(0,
40、2*pi,100);y=sin(x);z=cos(x);plot(x,y);title(sin(x);pause figure(2);plot(x,z);title(cos(x);返回新建h窗口,激活图形使其可见,并把它置于其它图形之上4、分割窗口、分割窗口h=subplot(mrows,ncols,thisplot)划分整个作图区域为mrows*ncols块(逐行对块访问)并激活第thisplot块,其后的作图语句将图形画在该块上。激活已划分为mrows*ncols块的屏幕中的第thisplot块,其后的作图语句将图形画在该块上。命令Subplot(1,1,1)返回非分割状态。subplot
41、(mrows,ncols,thisplot)subplot(1,1,1)解解x=linspace(0,2*pi,100);y=sin(x);z=cos(x);a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps)subplot(2,2,1);plot(x,y),title(sin(x)subplot(2,2,2);plot(x,z),title(cos(x)subplot(2,2,3);plot(x,a),title(sin(x)cos(x)subplot(2,2,4);plot(x,b),title(sin(x)/cos(x)例例 将屏幕分割为四块,并分别画出y=si
42、n(x),z=cos(x),a=sin(x)*cos(x),b=sin(x)/cos(x)。返回5、缩放图形、缩放图形zoom on 单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大2倍;单击鼠标右键,则缩小2倍解解 x=linspace(0,2*pi,30);y=sin(x);Plot(x,y)zoom on 例例 缩放y=sin(x)的图形zoom off为当前图形打开缩放模式关闭缩放模式返回6.改变视角改变视角view (1)view(a,b)命令view(a,b)改变视角到(a,b),a是方位角,b为仰角。缺省视角为(-37.5,30)。解 x=-3:0.1:3;y=1
43、:0.1:5;X,Y=meshgrid(x,y);Z=(X+Y).2;subplot(2,2,1),mesh(X,Y,Z)subplot(2,2,2),mesh(X,Y,Z),view(50,-34)subplot(2,2,3),mesh(X,Y,Z),view(-60,70)subplot(2,2,4),mesh(X,Y,Z),view(0,1,1)例 画出曲面Z=(X+Y).2在不同视角的网格图.view用空间矢量表示的,三个量只关心它们的比例,与数值的大小无关,x轴view(1,0,0),y轴view(0,1,0),z轴view(0,0,1)。(2)view(x,y,z)返回7.动画动画
44、 Moviein(),getframe,movie()函数Moviein()产生一个帧矩阵来存放动画中的帧;函数getframe对当前的图象进行快照;函数movie()按顺序回放各帧。返回 例 将曲面peaks做成动画。解 x,y,z=peaks(30);surf(x,y,z)axis(-3 3-3 3-10 10)m=moviein(15);for i=1:15 view(-37.5+24*(i-1),30)m(:,i)=getframe;end movie(m)10、应用举例、应用举例如右图,有10个点,其坐标集合为:11.522.533.544.555.56012345678910dat
45、a=2,4,5,6,3,4,5,1,4,3;3,4,7,1,0,3,5,3,6,10;求图上任意两点间的距离;数学表达式为:22)()(),(jijiyyxxjidis10、应用举例、应用举例data=2,4,5,6,3,4,5,1,4,3;3,4,7,1,0,3,5,3,6,10;%坐标集合坐标集合x=data(1,:);%X轴坐标轴坐标y=data(2,:);%Y轴坐标轴坐标n=length(x);%求求X中元素个数中元素个数 for i=1:n for j=1:n dis(i,j)=sqrt(x(i)-x(j).2+.(y(i)-y(j).2);%求出求出i,j两点间距离两点间距离 en
46、dend应用举例应用举例从从txt或或xls导入数据导入数据load data1.txt%data1就是数据变量,%存储了data1.txt里的数据high=data1(:,1:2:9);high(:)weight=data1(:,2:2:10);weight(:)data=xlsread(C:UsersAdministratorDesktop建模培训讲座(matlab)works data1.xls);x1=data(:,1);x2=data(:,2);x3=data(:,3);y=data(:,4);数据拟合有如下数据:x=1 2 3 4 5 6 7 8;Y=4.5 3 5 7.6 4 7
47、 10 7;如右图:请对其进行5次拟合拟合函数:polyfit(x,y,n)方程求解函数:polyval(P,xx)10、应用举例、应用举例012345678901234567891011axis(0 9 0 11)%对坐标进行设置对坐标进行设置hold on%保持当前图形保持当前图形y=4.5 3 5 7.6 4 7 10 7;x=1:8;plot(x,y,o)%画出原始数据画出原始数据P=polyfit(x,y,5);%对原始数据进行对原始数据进行5次拟合次拟合xx=1:0.1:length(y);%取值点取值点yy=polyval(P,xx);%求取值点的函数值求取值点的函数值plot(
48、xx,yy,r-)%画出新图像画出新图像title(5次拟合图像次拟合图像)%图形名称图形名称10、应用举例、应用举例10、应用举例、应用举例0123456789012345678910117次 拟 合 图 像0123456789012345678910115次 拟 合 图 像数据插值有如下数据:x=1 2 3 4 5 6 7 8;Y=4.5 3 5 7.6 4 7 10 7;如右图:请对其进行插值运算插值函数:interp1(x,y,xx,method)10、应用举例、应用举例012345678901234567891011插值函数nearst 最近点差值linear 线性插值spline
49、三次样条插值cubic 三次多项式插值axis(0 9 0 11)%对坐标进行设置对坐标进行设置hold on%保持当前图形保持当前图形y=4.5 3 5 7.6 4 7 10 7;x=1:8;plot(x,y,o)%画出原始数据画出原始数据xx=1:0.1:length(y);%插值点插值点yy=interp1(x,y,xx,cubic)%进行三次多进行三次多项式插值项式插值plot(xx,yy,r-)%画出新图像画出新图像title(三次多项式插值三次多项式插值)%图形名称图形名称10、应用举例、应用举例012345678901234567891011三 次 多 项 式 插 值10、应用举
50、例、应用举例例2 利用指令 diag 产生对角阵ar=rand(4,4)%产生4 4的0-1 均匀分布随即矩阵ard=diag(ar)%用矩阵的主对角线元素形成向量dD=diag(d)%用向量d 构成对角矩阵Dar=0.9501 0.8913 0.8214 0.92180.2311 0.7621 0.4447 0.73820.6068 0.4565 0.6154 0.17630.4860 0.0185 0.7919 0.4057d=0.95010.76210.61540.4057D=0.9501 0 0 00 0.7621 0 00 0 0.6154 00 0 0 0.4057符号计算功能符号