收藏 分享(赏)

plot用法二维平面图形和三维立体图形。.doc

上传人:wspkg9802 文档编号:6211976 上传时间:2019-04-02 格式:DOC 页数:10 大小:37KB
下载 相关 举报
plot用法二维平面图形和三维立体图形。.doc_第1页
第1页 / 共10页
plot用法二维平面图形和三维立体图形。.doc_第2页
第2页 / 共10页
plot用法二维平面图形和三维立体图形。.doc_第3页
第3页 / 共10页
plot用法二维平面图形和三维立体图形。.doc_第4页
第4页 / 共10页
plot用法二维平面图形和三维立体图形。.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、第五讲计算结果的可视化本节介绍 MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。5.1 二维平面图形5.1.1 基本图形函数plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用 plot 函数之前,必须首先定义好曲线上每一点的 x 及 y 坐标,常用格式为:(1)plot(x) 当 x 为一向量时,以 x 元素的值为纵坐标, x 的序号为横坐标值绘制曲线。当 x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,当 x 为 m n 矩阵时,就由 n 条曲线。(2)plot(x,y) 以 x 元素为横坐标值,y 元素为纵坐标

2、值绘制曲线。(3)plot(x,y1,x,y2,) 以公共的 x 元素为横坐标值,以 y1,y2, 元素为纵坐标值绘制多条曲线。例 5.1.1 画出一条正弦曲线和一条余弦曲线。 x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2)图 5.1.1 函数 plot 绘制的正弦曲线在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MATLAB 软件专门提供了这方面的参数选项(见表 5.1.1),我们只要在每个坐标后加上相关字符串,就可实现它们的功能。- 2 -表 5.1.1 绘图参数表色彩字符颜色线型字符线型格式标记符号数据点形式标记符

3、号数据点形式y 黄- 实线. 点 大于号例如,在上例中输入 plot(x,y1,r+-,x,y2,k*:)则得图 5.1.2图 5.1.2 使用不同标记的 plot 函数绘制的正弦曲线5.1.2 图形修饰MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。表 5.1.2 图形修饰函数表函数含义grid on (/off) 给当前图形标记添加(取消)网络xlable(string) 标记横坐标ylabel(string) 标记纵坐标title(string) 给图形添加标题text(x,y,string) 在图形的任意位置增加说明性文本信息gtext(string) 利用

4、鼠标添加说明性文本信息axis(xmin xmax ymin ymax) 设置坐标轴的最小最大值- 3 -例 5.1.2 给例 5.1.1 的图形中加入网络和标记。(见图 5.1.3 和 5.1.4) x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2) grid on xlabel(independent variable X) ylabel(Dependent Variable Y1 y1=sin(x); y2=cos(x); y3=x;- 4 - y4=log(x); plot(x,y1,x,y2) hold on plot(x,y3

5、) plot(x,y4) hold off例 5.1.4 在多个窗口中绘制图形。(见图 5.1.6) x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); y3=exp(x); y4=log(x); subplot(2,2,1); plot(x,y1); subplot(2,2,2); plot(x,y2); subplot(2,2,3); plot(x,y3); subplot(2,2,4); plot(x,y4);说明 (1)子窗口的序号按行由上往下,按列从左向右编号。(2)如果不用指令 clf 清除,以后图形将被绘制在子图形窗口中。图 5.1.4 设置坐标轴最大最小

6、值的正弦曲线- 5 -图 5.1.5 图形的比较显示(曲线叠加方法)图 5.1.6 图形的比较显示(图形窗口分割方法)- 6 -5.2 三维立体图形5.2.1 三维曲线图与二维图形相对应,MATLAB 提供了 plot3 函数,可以在三维空间中绘制三维曲线,它的格式类似于 plot,不过多了 z 方向的数据。plot3 的调用格式为:plot3(x1,y1,z1,x2,y2,z2,.)其中 x1,y1,z1,x2,y2,z2,等分别为维数相同的向量,分别存储着曲线的三个坐标值,该函数的使用方式和 plot 类似,也可以采用多种的颜色或线型(见表 5.1.1)来区分不同的数据组,只需在每组变量后

7、面加上相关字符串即可实现该功能。例 5.2.1 绘制方程 x=ty=sin(t)z=cos(t)在 t=0,2*pi上的空间方程。(见图 5.2.1) clf x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot3(y1,y2,x,m:p) grid on xlabel(Dependent Variable Y1) ylabel(Dependent Variable Y2) zlabel(Independent Variable X) title(Sine and Cosine Curve)图 5.2.1 函数 plot 绘制的三维曲线图- 7 -5.2.2 三

8、维曲面图如果要画一个三维的曲面,可以使用 mesh(X,Y,Z)或 surf(X,Y,Z)函数来实现。mesh 函数为数据点绘制网格线,图形中的每一个已知点和其附近的点用直线连接。surf函数和 mesh 的用法类似,但它可以画出着色表面图,图形中的每一个已知点与其相邻点以平面连接。为方便测试立体绘图,MATLAB 提供了一个 peaks 函数,它可以产生一个的高斯分布矩阵,其生成方程是N N z=3*(1-x).2.*exp(-(x.2)-(y+1).2)-10*(x/5-x.3-y.5).*exp(-x.2-y.2)-1/3*exp(-(x+1).2-y.2)对应的图形是一个凹凸有致的曲面

9、,包含了三个局部极大点及三个局部极小点。下面使用 peaks 函数来比较一下 mesh 和 surf 的区别。例 5.2.2 分别用 mesh 函数和 surf 函数绘制高斯矩阵的曲面。 z=peaks(40); mesh(z); surf(z);图 5.2.2 mesh 函数绘制的三维曲面图- 8 -图 5.2.3 surf 函数绘制的着色表面图在曲面绘图中,另一个常用的函数是 meshgrid 函数,其一般引用格式是:X, Y=meshgrid (x, y)其中 x 和 y 是向量,通过 meshgrid 函数就可将 x 和 y 指定的区域转换成为矩阵 X 和 Y。这样我们在绘图时就可以先

10、用 meshgrid 函数产生在 x-y 平面上的二维的网格数据,再以一组 z 轴的数据对应到这个二维的网格,即可画出三维的曲面。例 5.2.3 绘制方程sin(x2+y2)(1/2)z = -(x2+y2)(1/2)在 x-7.5,7.5;y-7.5,7.5 的图形。 x=-7.5:0.5:7.5;y=x; X,Y=meshgrid(x,y); R=sqrt(X.2+Y.2)+eps; Z=sin(R)./R; surf(X,Y,Z) xlabel(X 轴方向) ylabel(Y 轴方向) zlabel(Z 轴方向)(见图 5.2.4)_(x2+y2) 例 5.2.4 绘制由方程形成的立体图

11、。(见图 5.2.5) z=xe clear x=-2:0.1:2;y=x; X,Y=meshgrid(x,y); Z=X.*exp(-X.2-Y.2);- 9 - surf(X,Y,Z)图 5.2.4图 5.2.5- 10 -5.2.3 观察点MTALAB 允许用户设置观察点,其指令是: view(azimuth,elevation)其中方位角 azimuth 是观察点和坐标原点连线在 x-y 平面的投影和 y 轴负方向的夹角,仰角elevation 是观察点与坐标原点的连线和 x-y 平面的夹角。对于这两个角度,三维图形的默认值分别是-37.5 和 30,二维图形的默认值是 0 和 90。

12、例 5.2.5 从不同的角度观察高斯矩阵的曲面。 z=peaks(40); subplot(2,2,1); mesh(z); subplot(2,2,2); mesh(z); view(-37.5,-30); subplot(2,2,3); mesh(z); view(180,0); subplot(2,2,4); mesh(z); view(0,90);图 5.2.6 对应不同观察点的三维曲面图5.3 其他图形函数除了 plot 绘图函数以外,在有些场合对绘制的曲线会有一些特殊要求,这就要其他函数来实现,常用的几种函数如下(见表 5.3.1)- 11 -表 5.3.1 其他图形函数表函数含义

13、loglog 使用对数坐标系绘图semilogx 横坐标为对数坐标轴,纵坐标为线性坐标轴semilogy 横坐标为线性坐标轴,纵坐标为对数坐标轴polar 绘制极坐标图fill 绘制实心图bar 绘制直方图pie 绘制饼图area 绘制面积图quiver 绘制向量场图stairs 绘制阶梯图sterm 绘制火柴杆图例 5.3.1 x=0:pi/10:2*pi; y1=sin(x); subplot(2,2,1); plot(x,y1); subplot(2,2,2); bar(x,y1); subplot(2,2,3); fill(x,y1,g); subplot(2,2,4); stairs

14、(x,y1,k);图 5.3.1 其他图形函数- 12 -5.3.1 直方图函数 bar(x)可以绘制直方图,这对统计或者数据采集非常直观实用。它共有四种形式:bar,bar3,barh 和 bar3h,其中 bar 和 bar3 分别用来绘制二维和三维竖直方图,barh 和 bar3h 分别用来绘制二维和三维水平直方图,调用格式是:bar(x,y) 其中 x 必须单调递增或递减,y 为 n m 矩阵,可视化结果为 m 组,每组 n 个垂直柱,也就是把 y 的行画在一起,同一列的数据用相同的颜色表示;bar(x,y,width) (或 bar(y,width))指定每个直方条的宽度,如 wid

15、th1,则直方条会重叠,默认值为 width=0.8;bar(,grouped) 使同一组直方条紧紧靠在一起;bar(,stack) 把同一组数据描述在一个直方条上。例 5.3.2 y=5 3 2 9;4 7 2 7;1 5 7 3; subplot(2,2,1),bar(y) x=5 9 11; subplot(2,2,2),bar3(x,y) subplot(2,2,3),bar(x,y,grouped) subplot(2,2,4),bar(rand(2,3),.75,stack)图 5.3.2 直方图5.3.2 面积图函数 area 用来绘制面积图,面积图在 plot 的基础上填充 x

16、 轴和曲线之间的面积,该图用于查看某个数在该列所有数的总和中所占的比例。例 5.3.3 x=-3:3; y=3 2 5;6 1 8;7 4 9;6 3 7;8 2 9;4 2 9;3 1 7; area(x,y)- 13 -图 5.3.3 面积图5.3.3 饼图函数 pie 用来绘制饼图,它可以形象地表示出向量中各元素所占比例。其调用格式是:pie(x) x 中的元素通过 x/sum(x)进行归一化,以确定饼图中的份额;pie(x,explode) 向量 explode 和 x 元素数相同,用来指出需要分开的饼片,explode 中不为零的部分会被分开。图 5.3.4 饼图- 14 -例 5.

17、3.4 设某班的某课程的考试成绩如下:90 分以上有 32 人,81 至 90 有58 人,71至 80 分有 27 人,60 至 70 分为 21 人,60 分以下有 16 人,画出饼图。(见图 5.3.4) x=32 58 27 21 16; explode0=1 0 0 0 0; subplot(1,2,1) pie(x,explode0) explode1=0 0 0 0 1; subplot(1,2,2) pie(x,explode1)5.3.4 不同坐标系中的绘图Semilogx,semilogy,loglo,polar(theta,rho)的使用方法和 plot 完全类似,不同的

18、只是绘制到不同的图形坐标上。函数 semilogx 绘制 x 轴为对数标度的图形,在半对数坐标系中绘图;函数 semilogy 绘制 y 轴为对数标度的图形;函数 loglog 绘制两个轴都为对数间隔的图形;函数 polar(theta,rho)绘制极坐标图形,其中 theta 为相角,rho 为其对应的半径。例 5.3.5 绘制 =acos(3),a=2 的图形。(见图 5.3.5) theta=-pi:pi/80:pi; polar(theta,2*cos(3*theta)图 5.3.5 极坐标图5.4 符号表达式绘图MATLAB 软件提供了将表达式进行图形显示的功能。完成此功能需调用 f

19、plot 函数和ezplot 函数。- 15 -函数 fplot 用来绘制数学函数,其调用格式为: fplot(fun,lims)其中 fun 就是所要绘制的函数,可以是定义函数的 M 文件名,也可以是以 x 为变量的可计算字符串。例如diric(x,10)或sin(x),cos(x),对于向量 x 的每个元素,函数fun(x)必须返回一个行向量。如果 fun 返回f1(x),f2(x),f3(x),输入x1;x2,就会返回矩阵f1(x1) f2(x1) f3(x1)f1(x2) f2(x2) f3(x2)lims=XMIN XMAX YMIN YMAX限定了 x,y 轴上的绘图空间。例 5.

20、4.1 subplot(2,2,1),fplot(humps,0 1) subplot(2,2,2),fplot(abs(exp(-j*x*(0:9)*ones(10,1),0 2*pi) subplot(2,2,3),fplot(tan(x),sin(x),cos(x),2*pi*-1 1 -1 1) subplot(2,2,4),fplot(sin(1./x),0.01 0.1,1e-3)图 5.4.1 fplot 函数绘制表达式图形ezplot 函数是简捷绘图指令之一,它无需数据准备,直接画出函数图形,基本调用格式为 ezplot(f)其中 f 是字符串或代表数学函数的符号表达式,只有一

21、个符号变量,可以是x,缺省情况下x 轴的绘图区域为 2 , 2 ,但我们可以用 ezplot(f,xmin,xmax)或 ezplot(f,xmin,xmax)来指定 x 的范围。例 5.4.2 y=x2; subplot(1,2,1)- 16 - ezplot(y) subplot(1,2,2) y=sin(x); ezplot(y,-pi,pi)图 5.4.2 ezplot 函数绘制表达式图形5.5 plot 函数MATLAB 对数据是按列存储和计算的,运用 plot(x)时,当 x 为一个向量时,以其元素为纵坐标,其序号为横坐标值绘制曲线。当 x 为实矩阵时,则以其序号为横坐标,按列绘制

22、每列元素相对于序号的曲线,当 x 为 n m 矩阵时,就有 n 条曲线。如果 x,y 是同维向量,plot(x,y) 指令以 x 元素为横坐标值, y 元素为纵坐标值绘制曲线。如 x 是向量, y 是有一维与 x 元素数量相等的矩阵,则以 x 为共同横坐标,按列绘制 y 每列元素值,曲线数为 y 的另一维的元素数。如果 x,y 是同维矩阵,则以 x,y 对应列元素为、纵坐标分别绘制曲线,数目等于矩阵的列数。例 5.5.1 x=3 5 10 8; subplot(2,2,1) plot(x) x=3 5 10 8;7 2 9 4;2 7 2 7; subplot(2,2,2) plot(x) x

23、=3 5 6 8; y=1 5 10 4;- 17 - subplot(2,2,3) plot(x,y) x=1 3 5 7;2 4 6 8; y=6 2 5 10;3 5 2 6; subplot(2,2,4) plot(x,y,k:*)图 5.5.15.6 交互式图形指令ginput 是一个比较特殊的图形指令,用作获取图上数据,例如指令x,y=ginput(6) % 从图形上选取 6 个点此时,ginput 指令将把当前图形调入前台,同时光标变为十字叉,移动光标,使交叉点落在目标点上,单击鼠标,即可获得该点数据。例 5.5.2 fplot(humps,0 1) ginput(6)x =0.04490.18320.30070.38130.64170.8952- 18 -y =7.456138.157996.345057.456110.964921.1988

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 图形图像

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报