《数学实验MATLAB程序设计基础与绘图.ppt》由会员分享,可在线阅读,更多相关《数学实验MATLAB程序设计基础与绘图.ppt(34页珍藏版)》请在三一办公上搜索。
1、第 2 章 MATLAB程序设计基础与绘图,2023/6/21,2,第一章 Matlab入门,内容提要,2.1 二维图形2.2 三维图形 2.3 四维表现图2.4 图形处理技术2.5 控制语句2.6 M文件2.7 程序设计的辅助函数,2023/6/21,3,第一章 Matlab入门,程序设计基础,程序基本结构顺序结构,循环结构,分支结构顺序结构语句赋值语句:变量名=表达式键盘输入语句:变量名=input(提示信息)屏幕输出语句:disp(字符串),2023/6/21,4,第一章 Matlab入门,程序设计基础,循环结构语句for循环,语法格式如下:for 循环变量=初值:增量:终值 语句组 e
2、nd,2023/6/21,5,第一章 Matlab入门,程序设计基础,循环结构语句while循环,语法格式如下:while 条件式 语句组 end在for循环和while循环中,都可以使用break语句来终止循环,2023/6/21,6,第一章 Matlab入门,程序设计基础,分支结构语句if语句,语法格式如下:单分支:if 条件式 语句组 end 多分枝:if 条件式1 语句组1 elseif 条件式2 语句组2 else 语句组(这一句可以不用)end,2023/6/21,7,第一章 Matlab入门,程序设计基础,分支结构语句switch语句,语法格式如下:switch 表达式,case
3、 值1,语句1,case 值2,语句2,otherwise 语句,end也可分行书写:switch 表达式 case 值1 语句1 case 值2 语句2 otherwise 语句n end,2023/6/21,8,第一章 Matlab入门,程序设计基础,其它语句pause语句:暂停,按任意键继续return语句:返回到函数调用处(常用于函数语句体未执行完毕时的强制返回)强行终止程序的执行:Ctrl+C,2023/6/21,9,第一章 Matlab入门,程序设计基础,例2.1 计算解:用for循环 s=0;for n=1:100 s=s+1/n2;end disp(s=,num2str(s),
4、注:这里的n每取一次值就执行一次语句体,所以n是数,而不是数组,“/”和“”运算可以不用“./”和“.”。,2023/6/21,10,第一章 Matlab入门,程序设计基础,例2.1 计算也可以用while循环:s=0;n=1;while n=100 s=s+1/n2;n=n+1;end disp(s=,num2str(s),2023/6/21,11,第一章 Matlab入门,程序设计基础,例2.1 计算还可以使用更简单的方法:n=1:100;s=sum(1./n.2);disp(s=,num2str(s),2023/6/21,12,第一章 Matlab入门,程序设计基础,M文件的概念命令文件
5、:MATLAB的批处理程序文件(由若干语句行组成)函数文件:MATLAB的内部函数和用户自定义函数文件建立方法:在MATLAB的M文件编辑器窗口或者其他任何文本文件编辑器中均可建立文件主名以字母开头,由字母、数字或下划线组成(不要使用汉字);文件扩展名为.m(MATLAB会自动加扩展名)保存到当前目录(Current Directory)下,或保存到其他目录并将该目录设置为搜索路径调用方法:以该文件的主名来调用(注意:不要加.m),2023/6/21,13,第一章 Matlab入门,程序设计基础,命令文件例2.2:计算(m的值由用户输入)建立命令文件 eg2_2.m,内容如下:,调用:eg2_
6、2,m=input(请输入:m=);n=1:m;s=sum(1./n.2),2023/6/21,14,第一章 Matlab入门,程序设计基础,函数文件函数文件在内容上比命令文件多了一个文件头:function 因变量名,=函数名(自变量名,)语句组调用函数文件也是使用文件主名,同时必须给自变量赋予确定的取值,并使用圆括号把自变量括起来函数值由“语句组”中因变量获得的最后结果决定函数名最好与文件主名相同,以方便理解,2023/6/21,15,第一章 Matlab入门,程序设计基础,函数文件例2.3:定义函数建立函数文件 eg2_3.m,内容如下:,function s=f(m)n=1:m;s=s
7、um(1./n.2);,调用:eg2_3(1000),2023/6/21,16,第一章 Matlab入门,程序设计基础,函数文件例:定义一个计算圆锥体积的函数建立函数文件 yuanzhui_tiji.m,内容如下:,function v=yuanzhui_tiji(r,h)v=1/3*pi.*(r.2).*h;,调用:yuanzhui_tiji(5.3,7.6),2023/6/21,17,第一章 Matlab入门,程序设计基础,函数文件进一步:定义一个计算圆锥体积和侧面积的函数建立函数文件 yuanzhui_tiji_cemianji.m,如下:,function v,s=f(r,h)v=1/
8、3*pi.*(r.2).*h;s=pi.*r.*sqrt(r.2+h.2);,调用:v,s=yuanzhui_tiji_cemianji(5.3,7.6),说明:调用多值函数时,可以按顺序只取前面的因变量值。,2023/6/21,18,第一章 Matlab入门,程序设计基础,内联函数inline(适合在命令窗口定义简单函数)定义方法:函数名=inline(函数表达式,自变量名,.)调用方法:函数名(自变量取值,)匿名函数(7.0 以上版本具有此功能)定义方法:函数名=(自变量名,.)函数表达式调用方法:函数名(自变量取值,),只有一个自变量时,可以省略此项不写,2023/6/21,19,第一章
9、 Matlab入门,程序设计基础,例2.4 编写一个函数文件,对任意输入的向量x,计算如下分段函数值构成的向量。eg2_4aeg2_4b,2023/6/21,20,第一章 Matlab入门,绘图,点、线作图命令平面点集或连线 plot(x,y,图形特征符)其中,x、y是长度相同的一维数组,它们构成平面点集的横坐标和纵坐标;图形特征符用于指定颜色、点型(标记)和线型(参见P31 表2.4)。不指定点型和线型时,默认实连线。当数据点足够密集时,看起来即是“曲线图”举例 x=0:0.1:2*pi;y=sin(x);plot(x,y,ro-),可以在作图语句之后使用grid on命令给坐标系增加网格线
10、,使用grid off去掉网格线。平面图默认grid off,空间图默认grid on。,2023/6/21,21,第一章 Matlab入门,绘图,点、线作图命令多组平面点集或连线的叠加图 plot(x1,y1,图形特征符,x2,y2,图形特征符,.)其中,x1、y1是一对长度相同的一维数组,x2、y2也是一对长度相同的一维数组,同一自变量对应多个因变量的叠加图 plot(t,y1;y2;)其中,t、y1、y2 是长度相同的一维数组 注意:y1、y2、之间必须用分号(;)举例,2023/6/21,22,第一章 Matlab入门,绘图,点、线作图命令空间点集或连线 plot3(x,y,z,图形特
11、征符)其中x、y、z是长度相同的一维数组,它们构成空间点集的坐标举例 t=0:0.1:4*pi;x=cos(t);y=sin(t);z=2*t;plot3(x,y,z,r*);grid on,2023/6/21,23,第一章 Matlab入门,绘图,一元函数曲线作图命令 fplot(一元函数,a,b,图形特征符)绘制一元函数在区间a,b上的图形其中,一元函数可以是:M函数文件名,比如:fplot(sin,0,2*pi,r)函数表达式,比如:fplot(sin(x)+2*x-1,-10,10,:)内联函数名(不加单引号)比如:y=inline(log(x)/exp(x);fplot(y,1,10
12、)注意:在fplot命令中使用图形特征符时,点距是由软件内部决定的,用户不能干预,所以该命令通常不使用“点型”。(举例),2023/6/21,24,第一章 Matlab入门,绘图,一元函数曲线作图命令举例 例2.5:作出函数 y=x3-x-1 和 y=|x|0.2sin(5x)在区间-1,2的叠加图怎样作叠加图?方法一:使用plot命令一次绘制多组图(需生成点集坐标)方法二:作完一幅图后,使用hold on命令保留该图形,继续作下一幅图,直到使用hold off命令释放该功能或者关闭图形窗口。eg2_5,2023/6/21,25,第一章 Matlab入门,绘图,曲面作图命令预备知识:平面矩形区
13、域上的点坐标设平面区域 axb,c yd 取 x0=a:h1:b,y0=c:h2:d 则 该矩形区域上的点坐标可用直线组x与直线组y的交点坐标来表示在MATLAB中,可以使用meshgrid命令来生成平面点集的坐标:x,y=meshgrid(x0,y0)其结果中的x和y是同阶矩阵,分别表示矩形区域中的x坐标和对应的y坐标以x0=1,2,3,4;y0=5,6,7为例(演示),2023/6/21,26,第一章 Matlab入门,绘图,曲面作图命令mesh(x,y,z):绘制空间网面图surf(x,y,z):绘制空间曲面图其中,x和y是平面点集的坐标(通常使用meshgrid命令来生成),z是对应的
14、函数值坐标,它们是同阶矩阵,表示曲面的三维数据。例2.6:绘制下面的二元函数图形eg2_6a,2023/6/21,27,第一章 Matlab入门,绘图,曲面作图命令mesh(x,y,z):绘制空间网面图surf(x,y,z):绘制空间曲面图辅助命令shading flat%去掉曲面图上的网格线shading interp%去掉网格线,并使曲面光滑shading faceted%恢复曲面图图形视角的调整:view(方位角,俯仰角)命令或鼠标拖动,2023/6/21,28,第一章 Matlab入门,2.2 作图,曲面作图命令contour(x,y,z)%绘制等高线图(与mesh用法类似)conto
15、ur(x,y,z,n)%画n条等高线contour(x,y,z,h1,h2,)%在指定高度画等高线contour(x,y,z,h,h)%在指定的一个高度画等高线c,h=contour(x,y,z)%画等高线,并生成高度标识数据clabel(c,h)%给等高线标注高度值contourf(x,y,z)%另一种等高线图(填充色彩)contour3(x,y,z)%三维等高线图meshc(x,y,z)%在网面图下方投影等高线surfc(x,y,z)%在曲面图下方投影等高线eg2_6b,2023/6/21,29,第一章 Matlab入门,绘图,图形说明和定制title(字符串):给图形加标题xlabel(
16、字符串),ylabel(字符串),zlabel(字符串):给坐标轴x、y、z加标志text(x坐标,y坐标,z坐标,字符串):在指定的坐标点给图形加文字说明legend(字符串1,字符串2,.,k):生成图例 其中,k的取值可以是-1、0、1、2、3、4,分别决定图例出现的不同位置(例:tuli_legend),2023/6/21,30,第一章 Matlab入门,绘图,图形说明和定制axis(a,b,c,d):设定二维坐标系的坐标轴范围 axb,cyd axis(a,b,c,d,e,f):设定三维坐标系的坐标轴范围axb,cyd,ezfaxis:获取坐标轴的范围(向量)axis equal:使
17、各坐标轴的单位长度相同axis square:使图形区域的长宽(高)之比为1:1(:1)axis normal:恢复图形区域的默认长宽(高)之比,2023/6/21,31,第一章 Matlab入门,绘图,图形说明和定制figure/figure(n):打开一个新的图形窗口/或打开一个指定序号的图形窗口close/close(n)/close all:关闭当前图形窗口/或关闭指定序号的图形窗口/或关闭所有图形窗口clf/clf(n):清除当前图形窗口中的图形/或清除指定序号图形窗口中的图形subplot(m,n,k):将当前图形窗口分为mn个子图,并指向第k幅图,随后的绘图将出现在第k个子图处subplot:取消子图模式,2023/6/21,32,第一章 Matlab入门,绘图,图形说明和定制例2.7:空间曲线(eg2_7),2023/6/21,33,第一章 Matlab入门,绘图,图形窗口菜单和工具栏 图形编辑颜色、点型、线型等图形特性也可以在图形窗口使用图形编辑功能进行设置和修改(演示)图形的保存(.fig)与导出(可自选格式)(演示)图形的复制与粘贴(演示),2023/6/21,34,第一章 Matlab入门,习题,P,