第2章 MATALAB编程与作图.ppt

上传人:s****8 文档编号:66141914 上传时间:2022-12-14 格式:PPT 页数:63 大小:960KB
返回 下载 相关 举报
第2章 MATALAB编程与作图.ppt_第1页
第1页 / 共63页
第2章 MATALAB编程与作图.ppt_第2页
第2页 / 共63页
点击查看更多>>
资源描述

《第2章 MATALAB编程与作图.ppt》由会员分享,可在线阅读,更多相关《第2章 MATALAB编程与作图.ppt(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、E-mail:Tel:49936260数数 学学 实实 验验MATALABMATALAB编程与作图编程与作图MATALAB控制流控制流MATALAB作图作图M文件文件 2.1 M文件编写初步文件编写初步 本质:就是将一些指令预先在本质:就是将一些指令预先在M文件中编辑好,然后在需要时将文件中编辑好,然后在需要时将M文件调出来执行即可。文件调出来执行即可。M文件的分类:一类为简单的脚本文件的分类:一类为简单的脚本M文件;一类为函数文件;一类为函数M文件。文件。脚本脚本M文件就是就是一文件就是就是一连串常用指令的串常用指令的组合,可在指令窗口中直接合,可在指令窗口中直接 执行。执行。函数函数M文件

2、的开文件的开头一行需要有一个函数名称,然后用小括弧包括一行需要有一个函数名称,然后用小括弧包括需要的需要的输入参数;函数名称前可以有等号,在此等号的左方是它的入参数;函数名称前可以有等号,在此等号的左方是它的输出参数出参数 MATLAB的内部函数是有限的,有时为了研究某的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为一个函数的各种性态,需要为MATLAB定义新函数,定义新函数,为此必须编写函数文件为此必须编写函数文件.函数文件是文件名后缀为函数文件是文件名后缀为M的的文件,这类文件的文件,这类文件的第一行必须是一特殊字符第一行必须是一特殊字符function开始开始,格式为:,格式

3、为:function 因变量名因变量名=函数名(自变量名)函数名(自变量名)函数值的获得必须通过函数值的获得必须通过具体的运算实现具体的运算实现,并赋给因变,并赋给因变量量.1.函数函数M文件文件 单击单击MATALAB窗口里的窗口里的New-Mfile图标图标 输输入代入代码码:function z=fun(x)z=x(1)*2+x(2)*2-2*x(1)*x(2)+6*x(1)-6*x(2)单击单击FileSave,把文件保存在把文件保存在Work文件夹下文件夹下 在指令窗口中在指令窗口中输输入如下指令即可看到运行入如下指令即可看到运行结结果。果。fun(2,3)例例2 定义函数定义函数

4、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文件:文件:2.可以直接使用函数可以直接使用函数fun.m例如:计算例如:计算 f(1,2),只需在只需在Matlab命令窗口键命令窗口键入命令:入命令:fun(1 2)2.2 MATALAB程序设计初步程序设计初步 MATALAB提供了四种控制程序流结构:提供了四种控制程序流结构:for、while循环结构;ifelseend分支结构;switchcase结构;trycatch结构。1.for、while循环结构循环结构 1.1 f

5、or语句语句 for循环:允许一组命令以固定的和预定的次数循环:允许一组命令以固定的和预定的次数重复重复for 变量变量=array(初始值:增量:终止值)(初始值:增量:终止值)运算指令(运算指令(commands)end 注注1 增量默认值为增量默认值为1,也可自己定义增量值,增,也可自己定义增量值,增量值可小于量值可小于0。当增量值大于零时,程序将在变量。当增量值大于零时,程序将在变量大于终止值时终止;当增量小于零时,程序将在变大于终止值时终止;当增量小于零时,程序将在变量小于终止值时结束。量小于终止值时结束。for n=1:10 x(n)=sin(n*pi/10);endx 单循环语句

6、单循环语句:for n=2:6x(n)=2*x(n-1);endxx(1)=1;s=0;for i=1:100000 s=s+1/2i+1/3i;end s 多重嵌套循环语句多重嵌套循环语句:for m=1:5 for n=1:5 H(m,n)=m+n endendH 1.2 while语句语句 与与forfor循环以固定次数求一组命令相反,循环以固定次数求一组命令相反,whilewhile循环以不循环以不定的次数求一组语句的值定的次数求一组语句的值.whilewhile 表达式(表达式(expressionexpression)循环体循环体commandscommands end end 只

7、要在表达式只要在表达式(expression)(expression)里的所有元素为真,里的所有元素为真,就执行就执行whilewhile和和endend语句之间的命令串语句之间的命令串commandscommands,执行完,执行完成后再判断表达式是否为真,若不是则跳出循环体,向下成后再判断表达式是否为真,若不是则跳出循环体,向下继续执行。继续执行。s=0;i=0;while s=10000 i=i+1;s=s+i;end i 例例2设银行年利率为设银行年利率为11.25%。将。将10000元钱存入银行,问元钱存入银行,问多长时间会连本带利翻一番?多长时间会连本带利翻一番?money=100

8、00;years=0;while money1if x1 f=x2+1 f=x2+1EndEndif x=1if x1if x1 f=x2+1 f=x2+1else if x=0else if x=0 f=x3 f=x3 else else f=2*x f=2*x end endendend 1.3 trycatch结构结构 try语句用来检测程序代码是否会产生错误,一旦错误发生,语句用来检测程序代码是否会产生错误,一旦错误发生,MATALAB会立即跳入到相应的会立即跳入到相应的catch语句中去。语句中去。try statement1%命令块命令块statement1被执行。若正确,被执行。

9、若正确,则跳出此结构。则跳出此结构。catch statement2%当命令块当命令块statement1出现执行错误则出现执行错误则执行命令块则执行命令块则statement2。end 输入矩阵输入矩阵A、B的值,执行上面的程序,当的值,执行上面的程序,当A的列数不等于的列数不等于B的行的行数时,程序就会发现这个错误,并打印消息数时,程序就会发现这个错误,并打印消息 *Error cxd1 A*B。例如:例如:function cxd1(A,B)try X=A*B catch disp*Error cxd1 A*B end E-mail:Tel:49936260数数 学学 建建 模模第六章第

10、六章 作作 图图2.3 MATLAB图形绘制图形绘制 2.3.1 二维曲线图形二维曲线图形 Matlab作图是通过描点、连线来实现的,故在画一个曲线作图是通过描点、连线来实现的,故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标和纵坐标),然后将该点集的坐标传给标和纵坐标),然后将该点集的坐标传给Matlab函数画图函数画图.基本命令为:基本命令为:plot(X,Y,S)可以用下面的语句直接绘制出可以用下面的语句直接绘制出多条的曲线多条的曲线:plot(X,Y1,X,Y2,X,Yn)曲线类型曲线类型曲线颜色曲线颜色标记符

11、号标记符号选项选项 意义意义 选项选项 意义意义 选项选项 意义意义-实线实线-虚虚线线:点线点线-.点划点划线线none 无线无线b 蓝色蓝色g 绿色绿色m 红紫红紫色色w 白色白色c 蓝蓝绿色绿色k 黑色黑色r 红色红色y 黄色黄色*星号星号.点号点号x 叉号叉号v o 圆圈圆圈 pentagram 五角星五角星 square diamond hexagram 六角星六角星 参数参数S的各种选项的各种选项 注注1 上表中的选项可以进行组合。例如:若想绘制红色的点划线上表中的选项可以进行组合。例如:若想绘制红色的点划线且每个转折点上用五角星表示,则选相应适用怎样的组合形式?且每个转折点上用五

12、角星表示,则选相应适用怎样的组合形式?r-.pentagram x=-pi:0.05:pi;y=sin(tan(x)-tan(sin(x)plot(x,y)x=0:0.05:2*pi;y=sin(x);z=cos(x);plot(x,y,b,x,z,r.-)几点说明:几点说明:1、若若X,YX,Y都为都为向量向量,则分别表示则分别表示点集的横坐标和纵坐标点集的横坐标和纵坐标,例如,例如 plot(X,Y)-plot(X,Y)-画实线,画实线,S S曲线的性质(线性、粗细、颜色等)。曲线的性质(线性、粗细、颜色等)。2、若若X X向量向量,Y,Y为矩阵,则将在为矩阵,则将在同一坐标系下绘制同一坐

13、标系下绘制m m条曲线条曲线,每一行,每一行和和X X的关系将绘制出一条曲线。注意,要求的关系将绘制出一条曲线。注意,要求Y Y矩阵的列数应该等于向矩阵的列数应该等于向量量X X的长度。的长度。例:例:x=0:0.1:2;A=sin(pi*x);0.5+0.5*x;plot(x,A)%2条不同的条不同的 曲线曲线 3、若若X,YX,Y都为都为矩阵矩阵,且假设且假设X X和和Y Y的行、列数相同,则将绘制出的行、列数相同,则将绘制出X X矩矩阵每行和阵每行和Y Y矩阵对应行之间矩阵对应行之间关系关系的曲线。的曲线。例:例:A=1 4 2;0-3 4;0 4 3;B=1 0 0;0 1 0;0 0

14、 1;plot(A,B)%对应点的连线对应点的连线符号函数符号函数(显函数、隐函数和参数方程显函数、隐函数和参数方程)画图画图(1)ezplotezplot(x(t),y(t),tmin,tmax)表示在区间tminttmax绘制参数方程 x=x(t),y=y(t)的函数图ezplot(f(x),a,b)表示在axb绘制显函数f=f(x)的函数图ezplot(f(x,y),xmin,xmax,ymin,ymax)表示在区间xminxxmax和 yminyymax绘制隐函数f(x,y)=0的函数图例例1 在0,pi上画y=cosx的图形解解 输入命令 ezplot(sin(x),0,pi)解解

15、输入命令 ezplot(cos(t)3,sin(t)3,0,2*pi)解解 输入命令ezplot(exp(x)+sin(x*y)=0,-2,0.5,0,2)2.3.2 图形处理图形处理1subplot函数subplot(m,n,p)该命令将当前图形窗口分成mn个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。【例例】在一个图形窗口中同时绘制正弦、余弦、正在一个图形窗口中同时绘制正弦、余弦、正切曲线切曲线x=linspace(0,pi,60);y=sin(x);z=cos(x);w=tan(x);subplot(1,3,1);plot(x,y);subplot(1,3,

16、2);plot(x,z);subplot(1,3,3);plot(x,w)2.分隔线控制和图形标注分隔线控制和图形标注 MATALAB的默认状态下是不画的默认状态下是不画分隔线分隔线,它的疏密取它的疏密取决于坐标刻度。决于坐标刻度。调用格式:调用格式:grid on 画出分隔线画出分隔线 grid off 不画分隔线不画分隔线例如:例如:x=1:90;y=sin(x);plot(x,y);grid on3.图形标注图形标注 1)坐标轴名)坐标轴名label给相应的坐标轴给相应的坐标轴x,y,z加标注,只要调用相应的函数加标注,只要调用相应的函数 xlabel,ylabel,zlabel 以函数

17、以函数xlabel为例为例,其调用格式为其调用格式为:xlabel(text)1)“text”为要添加的标注文本为要添加的标注文本 2)书写图名)书写图名title(给图形加标题)(给图形加标题)其调用格式为其调用格式为:title(text)注注:title命令要写到命令要写到plot命令之后,否则不起作用;特殊字符串是区命令之后,否则不起作用;特殊字符串是区分大小的。分大小的。实例:实例:t=0:0.2:2*pi;plot(t,sin(t),o,t,cos(t),*);xlabel(x),ylabel(y);title(sin(x)和和cos(x)曲线曲线)4.特殊二维图形特殊二维图形 1

18、)极坐标图)极坐标图其调用格式为其调用格式为:polar(theta,rho,s)例例 试用极坐标绘制函数试用极坐标绘制函数theta=0:0.1:2*pi;rho=5*sin(4*theta/3);polar(theta,rho,rdiamond)2)散点图)散点图(与与plot类似,但只有数据点)类似,但只有数据点)例例 绘制函数绘制函数y=sinx的的散点图散点图x=1:40;y=sin(x);scatter(x,y)其调用格式为其调用格式为:scatter(x,y,c,s)c是指散点的大小是指散点的大小 3)直方图直方图(显示数据的分布规律)显示数据的分布规律)其调用格式为其调用格式为

19、:hist(y)使用使用10个等距离分布的区间来对向量个等距离分布的区间来对向量y的的分布分布进行统计进行统计,并返回每个区间上含有,并返回每个区间上含有y中元素的个数中元素的个数。Y=randn(15000,2);hist(Y)4)阶梯图形)阶梯图形函数函数stairs(x,y)可以绘制阶梯图形可以绘制阶梯图形x=-2.5:0.25:2.5;y=exp(-x.*x);stairs(x,y)5)条形图形)条形图形函数bar(x,y)可以绘制条形图形,如下列程序段将绘制条形图形x=-2.5:0.25:2.5;y=exp(-x.*x);bar(x,y)6)填充图形)填充图形fill(x,y,c)函

20、数用来绘制绘制并填充填充二维多边图形,x和y为二维多边形顶点坐标向量。字符 c 规定填充颜色。下述程序段绘制一正方形并以黄色填充:x=0 1 1 0 0;y=0 0 1 1 0;fill(x,y,y)x=0:0.025:2*pi;y=sin(3*x);fill(x,y,k)Matlab系统可用向量表示颜色,通常称其为颜色向量。基本颜色向量用r g b表示,即RGB颜色组合;以RGB为基本色,通过 r,g,b在01范围内的不同取值可以组合出各种颜色。x=0:0.025:2*pi;y=sin(3*x);fill(x,y,0.3 0.4.6)4)平面等值线图:)平面等值线图:contour(x,y,

21、z,n)绘制绘制n个等值线的二维等值线图个等值线的二维等值线图解解:X,Y=meshgrid(-2:0.2:2,-2:0.2:3);Z=X.*exp(-X.2-Y.2);contour(X,Y,Z);2.3.3 三维图形三维图形1.空间曲线空间曲线2.空间曲面空间曲面plot3(x,y,z,s)空空 间间 曲曲 线线 1、一条曲线一条曲线n维向量,分别表示曲线上点集的横坐标、纵坐标、函数值指定颜色、线形等 t=0:0.1:2*pi;x=t.3.*sin(3*t).*exp(-t);y=t.3.*cos(3*t).*exp(-t);z=t.2;plot3(x,y,z)plot3(x,y,z)2、

22、多条曲线多条曲线例例 画多条曲线观察函数画多条曲线观察函数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)空空 间间 曲曲 面面1、网格图、网格图所谓网格图,是指把相邻的数据点连接起来相成的网状面。所谓网格图,是指把相邻的数据点连接起来相成的网状面。mesh(x,y,z,

23、c)例例 绘绘peaks的网格图的网格图 解:解:x,y,z=peaks;mesh(x,y,z)peaks函数用于生成高斯型分布的数据,其参数为函数用于生成高斯型分布的数据,其参数为生成数据矩阵的维数生成数据矩阵的维数2、曲面图、曲面图所谓曲面图,就是把网格图表面的网格为成的小片区域(补所谓曲面图,就是把网格图表面的网格为成的小片区域(补片)用不同的颜色填充形成的彩色表面。片)用不同的颜色填充形成的彩色表面。说明:在绘制三维图形之前,应该先调用说明:在绘制三维图形之前,应该先调用meshgrid()函数生成函数生成网格数据网格数据x和和y,这样可以按函数公式用点运算的方式计算出这样可以按函数公

24、式用点运算的方式计算出z矩阵,矩阵,之后就可以用函数进行三维图形绘制。之后就可以用函数进行三维图形绘制。X,Y=meshgrid(x,y);Z=f(x,y);Surf(x,y,z)例例 绘绘peaks的曲面图的曲面图 解:解:x,y,z=peaks;surf(x,y,z)例例1 绘绘z=sinx+cosy的曲面图的曲面图解:解:x,y=meshgrid(0:0.5:2*pi,0:0.4:2*pi);z=sin(x)+cos(x);surf(x,y,z)解:解:x,y=meshgrid(0:31);n=2;D0=200;D=sqrt(x-16).2+(y-16).2);z=1./(1+D.(2*

25、n)/D0);surf(x,y,z)在图形上加格栅、图例和标注在图形上加格栅、图例和标注定制坐标定制坐标图形保持图形保持分割窗口分割窗口缩放图形缩放图形改变视角改变视角图形处理动动 画画 1、在图形上加格栅、图例和标注、在图形上加格栅、图例和标注(1)grid on:加格栅在当前图上加格栅在当前图上 grid offgrid off:删除格栅删除格栅(2)xlabel(string):在当前图形的在当前图形的x轴上加图例轴上加图例stringylabel(string):在当前图形的在当前图形的y轴上加图例轴上加图例string zlabel(string):在当前图形的在当前图形的z轴上加图

26、例轴上加图例stringtitle(string):在当前图形的顶端上加图例在当前图形的顶端上加图例string例例 绘制绘制z=sinh(x)+cosy的图形,并加注图例的图形,并加注图例“自变量自变量 X”、“自变量自变量Y”、“函数函数z”,”三维示意图三维示意图“并加格栅并加格栅.解:解:x,y=meshgrid(0:0.5:2*pi);z=sinh(x)+cos(y);surf(x,y,z);grid on;xlabel(自变量自变量x);ylabel(自变量自变量y);zlabel(函数函数z);title(三维图形示意图三维图形示意图)(3)gtext(string)命令命令gt

27、ext(string)用鼠标放置标注在现有的图上用鼠标放置标注在现有的图上.运行命令运行命令gtext(string)时,屏幕上出现当前图形,在时,屏幕上出现当前图形,在图形上出现一个交叉的十字,该十字随鼠标的移动移动,图形上出现一个交叉的十字,该十字随鼠标的移动移动,当按下鼠标左键时,该标注当按下鼠标左键时,该标注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(s

28、in(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);plot(x,y)axis(0.005 0.01 1 1)定制图形坐标将坐标轴返回到自动缺省值将坐标轴返回到自动缺省值axis autox、y、z的最大、最小值的最大、最小值3、图形保持、图形保持(1)hold on hold of例例 将将z=sin(x)+cos(y)、)、w=cos(x)+tan(y

29、)画出在同一屏幕画出在同一屏幕上。上。保持当前图形,以便继续画图到当前图上释放当前图形窗口x,y=meshgrid(0:0.5:2*pi,0:0.4:2*pi);z=sin(x)+cos(x);w=cos(x)+tan(y);surf(x,y,z);hold onsurf(x,y,w)(2)figure(h)例例 区间区间0,2*pi新建两个窗口新建两个窗口分别画出分别画出y=sin(x);z=cos(x)。新建h窗口,激活图形使其可见,并把它置于其它图形之上x=linspace(0,2*pi,100);y=sin(x);z=cos(x);plot(x,y);title(sin(x);paus

30、efigure(2);plot(x,z);title(cos(x);pause5、缩放图形、缩放图形zoom on 单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大中心的图形放大2倍;单击鼠标右键,则缩小倍;单击鼠标右键,则缩小2倍倍例例 缩放缩放y=sin(x)的图形的图形zoom off为当前图形打开缩放模式为当前图形打开缩放模式关闭缩放模式关闭缩放模式 x=linspace(0,2*pi,30);y=sin(x);plot(x,y)zoom on6.改变视角改变视角view (1)view(a,b)命令命令view(a,b

31、)改变视角到改变视角到(a,b),a是方位角是方位角,b为仰角。为仰角。缺省视角为(缺省视角为(-37.5,30)。)。例例 画出曲面画出曲面Z=sinx+cosy在不同视角的网格图在不同视角的网格图.view用空间矢量表示的,三个量只关心它们的比例,与数用空间矢量表示的,三个量只关心它们的比例,与数值的大小无关,值的大小无关,x轴轴view(1,0,0),),y轴轴view(0,1,0),),z轴轴view(0,0,1)。)。(2)view(x,y,z)X,Y=meshgrid(0:0.5:2*pi,0:0.3:2*pi);Z=sin(X)+cos(Y);subplot(2,2,1);mes

32、h(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)特殊的三维图形函数特殊的三维图形函数1、空间等值线图:、空间等值线图:contour 3(x,y,z,n)其中n表示等值线数。例例 山峰的三维和二维等值线图。解解 x,y,z=peaks;subplot(1,2,1)contour3(x,y,z,16,s)subplot(1,2,2)contour(x,y,z,16,s)3、三维散点图三维散点图 sc

33、atter3(X,Y,Z,S,C)在向量X,Y和Z指定的位置上显示彩色圆圈.向量X,Y和Z的大小必须相同.解解 输入命令输入命令:x,y,z=sphere(16);X=x(:)*.5 x(:)*.75 x(:);Y=y(:)*.5 y(:)*.75 y(:);Z=z(:)*.5 z(:)*.75 z(:);S=repmat(1.75.5*10,prod(size(x),1);C=repmat(1 2 3,prod(size(x),1);scatter3(X(:),Y(:),Z(:),S(:),C(:),filled),view(-60,60)例例 绘制三维散点图。7 动画设计动画设计函函数数m

34、=moviein(n)用用来来建建立立一一个个足足够够大大的的n列的列的帧帧矩阵矩阵m,存放动画中的帧存放动画中的帧。Getframe=m(:,i)函数函数getframe对当前的图象进行快照对当前的图象进行快照movie函数函数movie(m,n)以每秒n幅图形的速度播放由矩阵m的列向量所组成的画面。例例 将曲面将曲面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)【例例】播放一个不断变化的眼球程序段。播放一个不断变化的眼球程序段。m=moviein(20);for j=1:20 plot(fft(eye(j+10)m(:,j)=getframe;endmovie(m,10)例例3 设置一水波动画。设置一水波动画。m=moviein(20);x=-1:0.05:1;for j=1:20 y=sqrt(j.2-x.2)plot(x,y)hold on z=-sqrt(j.2-x.2)plot(x,z)m(:,j)=getframe;endmovie(m)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 保健医疗策划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁