1、上机材料二MATLAB语言绘图程序设计 2上机材料二、MATLAB语言绘图、程序设计六、绘图plot 基本二维图形fplot 一元函数图象plot3 空间曲线meshgrid 网格数据生成mesh 网面图surf 曲面图contour 等高线图contour3 3维等高线图title 标题xlabel x轴说明ylabel y轴说明zlabel z轴说明clabel 等高线高度标志text 文本grid 格栅legend 图例hold 图形保持axis 定制坐标轴view 改变视点subplot 子图figure 新图形窗口clf 清除图形close 关闭图形窗口1 曲线图plot(x,y)
2、作出以数据(x(i), y(i)为节点的折线图, 其中x, y为同长度的向量; plot(x1,y1,x2,y2,.) 作出多组数据折线图;fplot(fun,a,b)作出函数fun在区间a,b上的函数图; plot3(x,y,z)空间曲线图, 其中x, y, z为同长度的向量. plot(1 4 2 5,1 3 -1 2) plot(1 4 2 5,1 3 -1 2,1:3,2 10 3 ) %注意颜色图形可直接保存为M文件,也可利用图形窗口菜单Edit/Copy figure作为图片剪贴到Word或其他应用程序中。图形的线型,标记,颜色均可设定。常用的有颜色线型标记b 蓝(默认)- 实线(
3、默认)无标记(默认)g 绿- 虚线* 星r 红: 粗点线. 点y 黄-. 点划线o 圈m 洋红x 叉c 青+ 十字w 白s 方块k 黑d 菱形v 下三角形 上三角形 右三角形h 六角形p 五角形例 一元函数图 y=x3-x-1和y=sin(5x), -1x2fplot(x.3-x-1,-1,2);hold on; %在作下一幅图时保留已有图象x=-1:0.2:2;y=sin(5*x);plot(x,y,:ro);hold off; %释放hold on 曲面图x,y=meshgrid(xa,ya)当xa, ya分别为m维和n维行向量,得到x和y均为n行m列矩阵。meshgrid常用于生成X-Y
4、平面上的网格数据。mesh(x,y,z) 绘制网格图,是最基本的曲面图形命令, 其中x, y, z是同阶矩阵,表示曲面三维数据。mesh(xa,ya,z)xa, ya分别为m维和n维向量,z均为n行m列矩阵。等价于先x,y=meshgrid(xa,ya)再mesh(x,y,z)。surf(x,y,z) 绘制网面图,与mesh用法类似。contour(x,y,z) 绘制等高线图,与mesh用法类似,可指定z的范围。contour3(x,y,z) 绘制三维等高线图,与mesh用法类似,可指定z的范围。例如xa=1:3;ya=1:4;x,y=meshgrid(xa,ya);z=x+y;mesh(x,
5、y,z)x,y,z 1 2 3 1 1 1 2 3 4 1 2 3 2 2 2 3 4 5 1 2 3 3 3 3 4 5 6 1 2 3 4 4 4 5 6 7这3组数据构成网面的12的格点坐标。例 二元函数图z = x*exp(-x2-y2)clear;close; %close关闭所有图形窗口xa=-2:.2:2;ya=xa;x,y=meshgrid(xa,ya);z=x.*exp(-x.2-y.2);mesh(x,y,z); %网格图surf(x,y,z); %网面图contour(x,y,z); %等高线图contour3(x,y,z); %三维等高线图3说明、格栅和图例图5Titl
6、e(字符串)图形标题说明xlabel,ylabel,zlabel用法类似于title,分别说明坐标轴x,y,z。Text(x,y,字符串)将字符串表达的文字标于(x,y)处.Lengend(字符串1,字符串2,.)依次说明图例grid on/grid off 显示/不显示格栅例 参变量函数clear;close;t=0:0.1:20;r=exp(-0.2*t);th=0.5*pi*t;x=r.*cos(th);y=r.*sin(th);z=t;plot3(x,y,z);text(x(1),y(1),z(1),START)n=length(x);text(x(n),y(n),z(n),END)t
7、itle(SPACE LINE)xlabel(X);ylabel(Y);zlabel(Z);legend(Cone Line);grid on; %再试一试grid off, 观察变化4、图形控制Hold on/hold off 保留/释放现有图形axis off/on 不显示/显示坐标轴axis(a,b,c,d)定制2维坐标轴范围axb,cydaxis(a,b,c,d,e,f)定制3维坐标轴范围axb,cyd,ezfview(az,el)调整视角,az为角度,el为高度(默认az=-37.5, el=30)figure 开一个新图形窗口close 关闭现有图形窗口subplot(m,n,k)
8、将图形窗口分为m*n个子图,并指向第k幅图5图形对象设置 MATLAB图形窗口、坐标轴、图形元素等往往是系统自动选定的,有些可用图形命令来改变,如曲线的颜色、标题文本、视点等。一般可使用对象设置命令set来设置,如文本的字体,坐标轴刻度,窗口的背景色等,但用法较复杂。MATLAB的图形窗口建立了图形对象编辑工具,可直接改变图形设置。 作为示例,我们现在来设法将例3产生的图形改变成下列样子。(1) 按工具栏Edit plot按钮(指向左上方的箭头),使图形处于编辑状态;(2) 曲线粗细和颜色:选中曲线,用菜单Edit/Current Object Properties.设置(或用鼠标双击可编辑)
9、,将颜色改为红色,粗细改为3;(3) 字体大小:选中所要编辑的文字,用菜单Edit/Current Object Properties.设置;(4) 坐标轴:选中并双击坐标轴,将y轴方向设为“reverse”;(5) 再按工具栏Edit plot按钮,使图形回到正常状态;(6) 调整视角:按工具栏Rotate 3D按钮(带箭头的圆圈),选中坐标轴,调整为理想角度;(7) 加箭头线:按工具栏Insert Arrow按钮(指向左上方的箭头),从原点拉出三根坐标线, 并双击编辑加粗;(8) 加文本:按工具栏Insert Text按钮(字母A),在适当位置写 X, Y, Z,设置字体和大小;(9) 用
10、命令 axis off 使原坐标轴不显示。但图形窗口对象编辑工具并没有给出所有设置,更详细的设置可用菜单Edit/ .property完成。七、程序设计、控制流 到目前为止,我们用的命令都是顺序结构的,对于复杂的计算,需要循环和分支结构。例 计算 s = clear;s=0;for n=1:100 s=s+1/n/n;endss = 1.6350常用控制流语句有for 循环变量=初值:增量:终值,语句;endwhile(条件式),语句;endif(条件式), 语句; endif(条件式1), 语句1; elseif (条件式2), 语句2; ;else, 语句;end switch(分支变量)
11、case(值1), 语句1;case(值2), 语句2; otherwise 语句;end另外还有break(中断循环), return(中断执行返回)等。、M脚本文件 从工具栏的New File按钮或在File/New菜单选M-file 就进入MATLAB的编辑器Editer,用以编写用户的M文件。M文件可分为两类:M脚本文件和M函数文件。将多条MATLAB语句写在编辑器中保存在适当的目录中(这个目录须在MATLAB搜索路径中),就得到一个M脚本。如我们将下面几条语句写在编辑器中,clear;s=0;for n=1:100 s=s+1/n/n;ends保存为eg0_4(不要加扩展名m),然后
12、在命令窗口执行 eg0_4s = 1.6350使用编辑器也可打开和修改M文件,观察变量值,调试程序等。但要注意:每次修改程序后都要存盘。、函数文件M函数文件以function开头, 格式为function 输出变量=函数名(输入变量)语句;在MATLAB中,使用M函数是以该函数的磁盘文件主名调用,而不是function中的函数名, 但我们建议二者用同名。M函数与M脚本有两个重要区别:第一,M函数一般有输入输出变量;第二,M函数中所有变量为局部变量,而脚本文件中所有变量都存在于命令窗口,即全程变量。例如,写函数文件 M函数eg0_4f.mfunction s=f(m)s=0;for n=1:m
13、s=s+1/n/n;end保存为eg0_4f.m,在命令窗口执行 clear;eg0_4f(100),eg0_4f(1000)ans = 1.6350ans = 1.6439 s? Undefined function or variable s. %说明s不是命令窗口的变量*、编程几点高级事项input 提示输入disp 强行显示num2str 数值转字符串str2num 字符串转数值int2str 整数转字符串mat2str 矩阵转字符串char 按ASCII码转换strcmp 字符串比较eval 执行命令feval 执行函数keyboard 键盘指令pause 延时warning 显示警
14、告error 显示错误并中断nargin 函数的输入变量个数nargout 输出变量个(1)注释:注释语句注释用%开头,对本行后面字符起作用,注释语句不参与运算,起说明作用,增强程序的可读性,一个好的M文件开头应有一段注释,说明功能和使用方法,这部分注释使用 help 文件主名可看到。注释符%也常用于程序调试。(2)提示输入:input和disp是一组输入输出语句,例如编写下列脚本文件finddet.m,使对键盘输入的方阵求得行列式。 文件finddet.mclear A;A=input(Enter a square matrix: );d=det(A);disp(Its determinant is ,num2str(d);这里num2str是将数转换为字符串。现在运行finddet Enter a square matrix: (请你输入方阵,如1 2;3 4)Its determinant is 2(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1