《维及三维图形的绘制.ppt》由会员分享,可在线阅读,更多相关《维及三维图形的绘制.ppt(37页珍藏版)》请在金锄头文库上搜索。
1、第五讲第五讲 二维及三维图形的绘制二维及三维图形的绘制nmatlab绘图功能概述 n基本的绘图命令 n图形注释和可视化提高 n实例 matlab绘图功能概述n将大量数据变成直观的图形或图象,方便用户工作,并能发现其中的规律。n强大的图形功能,是C语言,FORTRAN语言所无法比拟的,可以很方便的实现大量数据计算结果的可视化,而且可以方便的修改和编辑图形界面。nmatlab不但提供了供最终用户使用的高级的绘图函数,而且提供了可以通过句柄图形来进行控制的可编程的用户界面。经常用到的MATLAB绘图函数管理类 生成类 注释和特性类figure 2-D xlabel,ylabel,zlabel(3D)
2、subplot plot text,text3(3D)zoom polar titlehold fill legend(2D)view(3D) plotyy boxrotate3d(3D) 3-D set plot3 grid surf,surfc axis, axis equal, axis off mesh,meshz colorbar(3D) contour,contour3,contourf clabel waterfall colormap cylinder二维图形绘制例1从逻辑上思考绘制这个图形的步骤?图形绘制的一般步骤%绘图数据的准备 x=0:pi/120:2*pi; %生成横坐
3、标向量 y1=sin(x); % 计算正弦向量 y2=cos(x); % 计算余弦向量%选择图形窗口以及绘图区域在窗口中的位置 figure(1) subplot(2,1,1)%调用基本绘图函数 h=plot(x,y1,x,y2);%设置线型和数据点的属性 set(h,linewidth,2,linestyle,-;-.)%设置坐标轴的区间、刻度以及网格线 axis(0 2*pi -1.2 1.2) Matlab基本二维绘图命令n画点n画线n画圆n函数相对于另一函数的图形绘制 n曲线族的绘制 n在一个图形用户界面中绘制多个函数图形 画点n在(2,4)坐标处加一红色星号,其语句为: plot(2
4、,4,r*)画线画线 n用默认线型(实线)及默认颜色(蓝色)画一条从(0,0)到(1,2)的直线 plot(0 1,0 2) n如何画n条互不相连的线段,例如要求在x=2,4,6,8处画4条从y=0到y=cos(x/20)的垂直线。 程序如下: x=2:2:8; plot(x;x,zeros(1,length(x);cos(pi*x/20),k) 关于画线的一些简单讨论关于画线的一些简单讨论nMatlab会自动标出轴线刻度 naxis(xmin xmax ymin ymax)语句对轴线进行调整n得到轴的边界值的语句为v=axis画圆画圆n在笛卡儿坐标系中画一个半径为r,圆心坐标为(a,b)的圆
5、,首先应进行如下坐标变换 x=a+rcos() y=b+rsin()设则画圆的程序如下:theta=linspace(0,2*pi);plot(1+0.5*cos(theta),2+0.5*sin(theta)axis equal命令使两坐标轴的刻度单位相同如何画如何画6个同心圆个同心圆n要求:圆心在(要求:圆心在(1,2)初始半径为)初始半径为0.5,半径增量为,半径增量为0.25theta=linspace(0,2*pi,50);rad=0.5:0.25:1.75;x=1+cos(theta)*rad;y=2+sin(theta)*rad;plot(x,y,k,1,2,k+)axis eq
6、ual曲线族的绘制 nmatlab允许用向量表示一个轴,用矩阵表示另一个轴,并根据矩阵的行和列与向量长度的匹配情况画出向量对匹配的行或列的曲线图。n画抛物线族的情况如下:nmeshgrid函数的用法说明如下 如果s=s1 s2 s3 s4 t=t1 t2 t3 则命令:u v=meshgrid(s,t)将生成两个(34)阶矩阵:程序如下:x=-5:0.2:5;a=1:5;xx,aa=meshgrid(x.2,a.2);plot(x,aa-xx,k) 在一个图形用户界面中绘制多个函数图形在一个图形用户界面中绘制多个函数图形n考虑如下三个函数n方法1x=linspace(0,3.5)plot(x,
7、0.1*x.2;cos(x).2;exp(-0.3*x),k)在一个图形用户界面中绘制多个函数图形在一个图形用户界面中绘制多个函数图形n方法2x=linspace(0,3.5)plot(x,0.1*x.2,k,x,cos(x).2,k,x,exp(-0.3*x),k)n方法3x=linspace(0,3.5)plot(x,0.1*x.2,k)hold on %保持图形窗口不变,在图形中添加新的图形对象plot(x,cos(x).2,k)plot(x,exp(-0.3*x),k)图形注释和可视化提高 n坐标轴和曲线的标注、图形标题和文本 n填充区域 n希腊字母、数学符号、下标和上标 n轴、曲线和
8、文本属性的改变 NOTE:相关内容和表格可以参考Matlab原理与工程应用一书 高会生等译,电子工业出版社,在学校超星图书馆网站上可下载坐标轴和曲线的标注、图形标题和文本n用于标注x轴、y轴及添加图形标题的函数分别为xlabel(s), ylabel(s),title(s),其中s为字符串n在图形窗口中任意位置放置文本的函数为text(x,y,s),其中x,y为放置字符串s的位置的坐标n程序:x=0:0.05:6;plot(x,cos(x),k,x,1./cosh(x),k,4.73 4.73,-1 1,k)xlabel(x)ylabel(value of function)title(vis
9、ulization of two intersecting curves)text(4.8,-0.1,x=4.73)text(2.1,0.3,1/cosh(x)text(1.2,-.4,cos(x)legend函数的使用legend函数的使用n首先legend函数是另一种标注曲线的方法。n语句格式为legend(s1,s2,sn,Location,p)其中s1,s2等为每条曲线包含字符数字的标识符号,按给出的顺序显示在图注框中。Location后为关键字。表明其后的字符串将给出图注框所处的位置。P=North,NorthEast总共8个位置n每个figure或subplot中仅可使用一个leg
10、end函数。n图注周围边框的显示或关闭由函数legend(boxon)或legend(boxoff)控制。实现程序如下:x=0:0.05:6;plot(x,cos(x),k-,x,1./cosh(x),k-)legend(cos(x),1/cosh(x),Location,SouthWest)填充区域填充区域nfill(x,y,c)其中x,y是表示构成封闭多边形线段端点的同阶次矩阵。字符串c表是填充颜色的字符实现上图的程序如下:x=0:0.05:6;plot(x,cos(x),k,x,1./cosh(x),k-,4.73 4.73,-1 1,k)xlabel(x);ylabel(value o
11、f function);title(visulization of two intersecting curves);text(4.8,-0.1,x=4.73)legend(cos(x),1/cosh(x),Location,SouthWest)xn=linspace(0,4.73,50);hold onfill(xn fliplr(xn),1./cosh(xn) fliplr(cos(xn),c);希腊字母、数学符号、下标和上标 希腊字母、数学符号、下标和上标nMatlab已经内置了一个相当不错的Tex转换器。在所有的Matlab Figure里都可以使用大量的Tex代码来输入公式、数学符号
12、等 n下标由下划线(_)生成;上标由指数运算符()生成;希腊字母的生成如表所示:先输入反斜杠(),再输入字母的拼音。大写希腊字母仅需将拼音的首字符大写即可。(参见Matlab的原理与工程应用第二版表6.5)n可在字母数字字符前加入“bf”使字符变粗,加入“it”生成斜体字符。如果要恢复正常模式,可在字母数字字符前加入“rm”n数学符号可在其特殊拼音前加反斜杠()来生成。一些常用符号也如表6.5中给出。n常用语法是在一对单引号间放置一组相关指令。当一组符号要放置在一起时,例如在指数中显示的表达式。则可将其放在一对大括号()内。希腊字母、数学符号、下标和上标n实现计算前面函数并标注的程序:x=li
13、nspace(1,2);beta=3;plot(x,cos(4*pi*x).*exp(-(1+x.beta),k)title(itg_rm2 rmversurs itx rmfor itbetarm=3)ylabel(itg_rm2)xlabel(itx)text(1.2,0.08,itg_rm2rm=cos(itxrm)iterm-(1+itxbetarm)轴、曲线和文本属性的改变轴、曲线和文本属性的改变nMatlab能够改变图形元素的所有属性。 n曲线:线宽和颜色;轴标注、图形标题、添加文本和图注:字体、排列、大小、类型、字符和颜色;轴:线宽和文本属性n改变曲线和文本的属性,则对于函数xl
14、abel,ylabel,title和text可添加关键字及其数值作为这些函数的参数。 xlabel(s,keyword,key word value,) ylabel(s,keyword,key word value,) title(s,keyword,key word value,) text(x,y,s,keyword,key word value,) key word 为包含关键字的字符串, key word value是与关键字相对应的字符串或数值文本位置关键字及其属性关键字 关键字的值 Horizontal Alignment Left Center RightVertical Al
15、ignment Top Middle BottomRotation 0360o或-180o180o其它文本关键字及其属性Linewidth number0(default=0.5)FontSize number0(default=10)FontName Courier Helvetica(default) Times(Times Roman)Color 见表6.1第二列“FontWeight Normal(default) Bold轴、曲线和文本属性的改变轴、曲线和文本属性的改变相关程序段x=linspace(0,6,100);hc=plot(x,cos(x),k-);hold onhch=p
16、lot(x,1./cosh(x),k-);hs1=plot(4.73 4.73,-1 1,k);xlabel(it bfx,FontSize,14,FontName,Times)ylabel(value of function,FontSize,14)title(bfvisulization of two intersecting curves,FontName,Courier,FontSize,14)text(4.8,-0.1,itx rm=4.73,FontName,Times,FontSize,12);a,b=legend(cos(x),1/cosh(x),Location,SouthW
17、est);set(hc,LineWidth,4)set(hch,LineWidth,2.5)set(hs1,LineWidth,0.25,Color,b);set(b(1),FontSize,14,Color,r)set(gca,FontSize,14,LineWidth,1.5)句柄的概念优化问题举例考虑以下最小化问题其约束条件为:画出以上目标函数(圆)和解区间。 优化问题举例程序段th=0:pi/90:2*pi;fill(3.+cos(th),1.+sin(th),g)axis equalaxis(-2 5 -5 4)hold onfill(0 4.5 5 5,-5 4 4 -5,r)pl
18、ot(-2 5,0 0,k,0 0,-5 4,k,1,1,k+)r=0.5:.5:3;plot(1.+cos(th)*r,1.+sin(th)*r,b)title(Blue circles: function minimized. Green area: feasible region,fontsize,14)xlabel(x_1,fontsize,14)ylabel(x_2,fontsize,14)set(gca,fontsize,14)三维绘图-曲面绘制函数surf(x,y,z)n例题:绘制如下函数确定的曲面z(x,y)=x4+3x2+y2-2x-2y-2x2y+6其范围为 -3x3,-3
19、y13函数如下:function x,y,z=SurfExamplex1=linspace(-3,3,15);y1=linspace(-3,13,17);x,y=meshgrid(x1,y1);z=x.4+3*x.2-2*x+6-2*y.*x.2+y.2-2*y;调用格式:x,y,z=SurfExample;surf(x,y,z)等高线图n在曲面下创建等高线图surfc(x,y,z)和meshc(x,y,z)n创建不带曲面的等高线图contour(x,y,z,v) 二维等高线图C,h=contour(x,y,z,v)Clabel(C,h,v) 此函数对用于标注等高线contour3(x,y,z
20、,v) 三维等高线图C,h=contour3(x,y,z,v)Clabel(C,h,v) 此函数对用于标注三维等高线三维绘图举例程序段nn=30; neta=20; nxi=30;n=0:10; kn=(2*n+1)*pi/2; ba=1.0;eta=linspace(-1, 1, neta); xi=linspace(-1, 1, nxi);cn=(-1).n./(2*n+1).2./cosh(kn*ba);cnn=meshgrid(cn, xi, 1);eeta=meshgrid(eta, xi, 1);txz=-16/pi/pi*(cnn.*sinh(xi*kn)*cos(kn*eta);tyz=2*eeta-16/pi/pi*(cnn.*cosh(xi*kn)*sin(kn*eta);figure(1)surf(eta, xi, txz.2+tyz.2)figure(2)contour(eta,xi,txz.2+tyz.2,30)关键行语句的理解上面第一个矩阵可由meshgrid函数产生,这里n取0-10,meshgrid(cn,xi)的执行结果便是生成xi行矩阵,每一行为cn向量受扭矩作用矩形梁剪力图和等高线图