matlab图形与可视化课件_第1页
matlab图形与可视化课件_第2页
matlab图形与可视化课件_第3页
matlab图形与可视化课件_第4页
matlab图形与可视化课件_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章图形与可视化2.1二维绘图的plot命令

2.2图形修饰与控制

2.3特殊坐标二维图形

2.4特殊二维图形

2.5三维图形2.6图形用户界面设计2.7图形用户界面(GUI)的应用第二章图形与可视化2.1二维绘图的plot命令12.1二维绘图的plot命令MATLAB最常用的二维绘图命令是plot命令,该命令最直接的调用格式是plot(x,y)。如果想绘制一个周期内的正弦曲线,可在窗口键入t=0:.1:2*pi;y=sin(t);plot(t,y),可得左图。MATLAB下还允许在一个绘图窗口上绘制多条曲线,例如下面的命令

t=0:.1:2*pi;y=[sin(t);cos(t)];plot(t,y),可得右图。2.1二维绘图的plot命令MATLAB最22.1二维绘图的plot命令可以看出,在一个窗口绘制多条曲线时,MATLAB会自动用不同颜色将图形显示出来。此外,MATLAB还提供了plotyy()函数来绘制曲线。不同的是该函数绘制出来的曲线坐标轴两边均有标注,此函数允许两条幅值相差悬殊的曲线在同一幅图上绘制出来,而不影响观察效果。该函数的调用格式为plotyy(t,y1,t1,y2)。例如键入

t=0:.1:2*pi;plotyy(t,sin(t),t,0.01*cos(t))回车可得2.1二维绘图的plot命令可以看出,在一个32.1二维绘图的plot命令MATLAB提供了一些绘图的选项。带有选项的曲线绘制命令的调用格式为:plot(x1,y1,’选项1’,x2,y2,’选项2’,…)。各种选项包括颜色控制符、线型控制符、数据点标记字符。详情见教材78页表2-1、2-2、2-3。不同选项可以连在一起使用,例如选项‘r:o’,”r”表示曲线颜色为红色,“:”表示线型采用点线绘制,“o”表示曲线每一个数据点处用圆圈标出。例如

t=0:.2:2*pi;plot(t,sin(t),‘r:o’)回车可得2.1二维绘图的plot命令MATLAB提42.2图形修饰与控制坐标轴的调整1、MATLAB可以自动根据要绘制的曲线数据的范围选择合适的坐标系,使得曲线尽可能清晰地显示出来,所以一般情况下用户不必担心坐标范围的选择。但是用户如果感到自动选择的坐标不合适,可以用手动的方式来选择新的坐标系范围。该工作可以调用axis()函数来完成。该函数的调用格式为:axis([xmin,xmax,ymin,ymax])。可以将图形的x轴范围限定在[xmin,xmax]之间,y轴范围限定在[ymin,ymax]之间。如果除了以上四个参数之外用户还指定了zmin,zmax,则MATLAB在绘制三维曲线时会参照指定的三个坐标轴的范围来绘制最终的图形。2、命令axis控制字符串可以根据控制字符串的功能控制图形。例如axissquare命令可将图形设置为正方形。控制字符串的功能详见教材79页表2-4。2.2图形修饰与控制坐标轴的调整52.2图形修饰与控制坐标刻度标示命令:set(gca,’xtick’,标示向量)set(gca,’ytick’,标示向量)按照标示向量设置的x,y轴的刻度标示。在窗口键入t=0:.1:2*pi;y=sin(t);plot(t,y)set(gca,‘xtick’,[01.43.1456.28])可得左图。命令set(gca,'xticklabel','0|1.4|half|5|one')可以改变x轴的标注点,横轴用字符串标注,如右图所示。2.2图形修饰与控制坐标刻度标示62.2图形修饰与控制文字标示有关图形的标题和轴线标注等的指令有:title(‘字符串’)——图形标题xlable(‘字符串’)——x轴标注ylable(‘字符串’)——y轴标注text(x,y,’字符串’)——在坐标(x,y)处标注说明文字gtext(‘字符串’)——用鼠标在特定处标注说明文字输入特定的文字需要用反斜杠(\)开头,用法如教材81页表2-5。网格控制网格是在坐标刻度标示上画出的格线,便于对曲线进行观察和分析。命令gridon——在所画的图形中添加网格线;gridoff—在所画的图形中去掉网格线;也可以只输入命令grid添加网格线,再输入一次命令grid,则去掉网格线。2.2图形修饰与控制文字标示72.2图形修饰与控制键入t=0:.1:2*pi;y=sin(t);plot(t,y)xlabel('t(deg)')ylabel('magnitude(V)')title('thisisanexample0\leftarrow2\pi')%use‘TextProperties’tosearchtext(3.14,sin(3.14),'\leftarrowthisiszerofor\pi')grid可得2.2图形修饰与控制键入t=0:.1:2*pi;y=s82.2图形修饰与控制图例注释

当在一个坐标系上画有多幅图形时,为区分各个图形,MATLAB提供了图例的注释说明。格式为:

legend(字符串1,字符串2,…,参数)此命令在图形中开启一个注解视窗,依据绘图的先后顺序,依次输出字符串对各个图形进行注解说明。如字符串1表示第一个出现的线条,字符串2表示第二个出现的线条,参数字符串确定注解视窗在图形中的位置,含义为右表中所示。注解视窗可以用鼠标拖动,放在合适的位置。参数字符串含义0尽量不与数据冲突,自动放置在最佳位置1放置在图形的右上角(默认)2放置在图形的左上角3放置在图形的左下角4放置在图形的右下角-1放置在图形视窗外右边2.2图形修饰与控制图例注释参数字符串含义0尽量不与数92.2图形修饰与控制键入命令t=0:.1:2*pi;plot(t,sin(t),'-',t,1.5*cos(t),':');legend('first','second')

回车可得2.2图形修饰与控制键入命令t=0:.1:2*pi;102.2图形修饰与控制图形的保持

用plot命令绘图时,首先将当前图形窗口清屏,再绘制图形,所以只能见到最后一个plot命令绘制的图形。为了能利用多条plot命令绘制多幅图形,就需要保持窗口上的图形。hold命令用于保持当前的图形,不影响坐标轴的特性;holdon命令保持当前的图形及轴系的所有特性;holdoff用于解除holdon命令。键入t=0:.1:2*pi;plot(t,sin(t),'-');holdon;plot(t,1.5*cos(t),':')回车可得

2.2图形修饰与控制图形的保持112.2图形修饰与控制图形窗口的分割

MATLAB绘图命令可以将绘图窗口分割成几个区域,在各个区域中分别绘图。命令subplot(m,n,p)将当前绘图窗口分割成m行n列区域,并指定第p个编号区域为当前绘图区域。区域编号的原则是“先上后下,先左后右”。MATLAB允许每个编号区域可以以不同的坐标系单独绘图。m,n和p前面的逗号可以省略。键入t=0:.1:2*pi;y1=sin(t);y2=1.5*cos(t);y3=sin(2*t);y4=5*cos(2*t);subplot(221);plot(t,y1);title('sin(x)');subplot(222);plot(t,y2);title('cos(x)');subplot(223);plot(t,y3);title('sin(2x)');subplot(224);plot(t,y4);title('cos(2x)');回车可得2.2图形修饰与控制图形窗口的分割122.2图形修饰与控制2.2图形修饰与控制132.2图形修饰与控制图形的填充

fill命令用于填充二维封闭多边形。命令fill(x,y,’color’)在由数据x,y所构成的多边形内,用color所指定的颜色填充。如果该多边形不是封闭的,可以用初始点和终点的连线封闭。color控制符见教材78页表2-1的说明。键入t=0:.05:7;y=sin(t);fill(t,y,'k')回车可得2.2图形修饰与控制图形的填充142.3特殊坐标二维图形对数坐标图形semilogx(x,y,参数)绘制半对数坐标图形,其x轴取以10为底的对数坐标,y轴为线性坐标。semilogy(x,y,参数)绘制半对数坐标图形,其y轴取以10为底的对数坐标,x轴为线性坐标。loglog(x,y,参数)绘制x,y轴都取以10为底的对数坐标图形。其中参数说明参阅plot命令。键入x=0:0.5:20;y=10.^x;subplot(221),semilogx(x,y);title('semilogxgraph')subplot(222),semilogy(x,y);title('semilogygraph')subplot(223),loglog(x,y);title('logloggraph')subplot(224),plot(x,y);title('lineargraph')回车可得2.3特殊坐标二维图形对数坐标图形152.3特殊坐标二维图形

2.3特殊坐标二维图形162.3特殊坐标二维图形极坐标图形

polar(theta,radius,参数)命令绘制相角为theta,半径为radius的极坐标图形。键入t=0:0.01:pi;r=sin(t);polar(t,r)回车可得2.3特殊坐标二维图形极坐标图形172.4特殊二维图形函数图形

fplot(‘函数运算式’,[xminxmax])命令用来绘制给定函数在区间[xminxmax]内的变化图形。例如执行命令

fplot('sin(3*x)',[04]);grid可以画出y=sin(3x),其中x在0到4之间变化的图形。2.4特殊二维图形函数图形182.4特殊二维图形饼图饼图在统计中常用来表示各因素所占的百分比。命令pie(x)或pie(x,explode)根据矩阵或者向量x绘制饼图,以表示各数据占sum(x)的百分比。若x为向量,该命令绘制x的每一元素占全部向量元素总和的百分比饼图,如x为矩阵,该命令绘制x的每一元素占全部矩阵元素总和的百分比饼图。参数explode表示对应的扇形图是否从整个饼图中分离出来,若非零,则分离出来,它的维数应与x相同。键入x=[121;341];(按列逆时针)pie(x,[100;001])可得2.4特殊二维图形饼图192.4特殊二维图形条形图

条形图用来表示一些数据的对比情况。MATLAB提供了两类条形图的命令:垂直方向的条形图和水平方向的条形图。垂直方向的条形图命令bar(x,width)或bar(x,’参数’)根据矩阵和向量x绘制条形图。若x为向量,则以其各元素的序号为各个数据点的横坐标,以x向量的各个元素为纵坐标,绘制一个垂直方向的条形图。若x为矩阵,同时参数字符串为group或者缺省,则以其各行号为横坐标,每一行分别以列的各元素为纵坐标,绘出一组垂直方向的条形图。若参数字符串为stack,则以其各行号为横坐标,每一行以列向量的累加值为纵坐标,绘出一个垂直方向的分组式条形图。Width给定条形的宽度,缺省值为0.8,若该值大于1,则条形图重叠。2.4特殊二维图形条形图202.4特殊二维图形键入x=[10,20,30;15,35,10;5,20,25];subplot(121),bar(x,'group')subplot(122),bar(x,'stack')

回车可得2.4特殊二维图形键入x=[10,20,30;15,35212.4特殊二维图形水平方向的条形图水平方向的条形图命令形式与垂直方向条形图命令相同。命令为barh(x,width)或者barh(x,’参数’)。键入x=[10,20,30;15,35,10;5,20,25];subplot(121),barh(x,'group')subplot(122),barh(x,'stack')回车可得2.4特殊二维图形水平方向的条形图222.4特殊二维图形梯形图梯形图可以用来表示系统中的采样数据。命令形式为stairs(x)或者stairs(x,y),其中,x、y均为向量。stairs(x)命令绘制以x的向量序号为横坐标,以x向量的各个对应元素为纵坐标的梯形图。stairs(x,y)命令绘制以向量x的各个对应元素为横坐标,以y向量的各个对应元素为纵坐标的梯形图。键入x=0:.1:7;y=sin(x);stairs(x,y)回车可得2.4特殊二维图形梯形图232.4特殊二维图形概率分布图

研究随机系统时,常常要用到概率分布图。MATLAB提供hist命令来绘制概率分布图。命令hist(y,x)绘制y在以x为中心的区域中分布的个数条形图。例如,x是一个5元素的矢量,hist将y的元素分成5条,每条在x轴的中心是x元素。键入x=-2:0.5:2;y=randn(10000,1);(零均值单位方差正态分布)hist(y,x)

可得右图即y数组中,在-2附近的数据约有400个,在-1.5附近的数据约有700个,等等。2.4特殊二维图形概率分布图242.4特殊二维图形向量图原点向量图命令compass(x)绘制相对于原点的向量图,若x为复数,compass(x)命令相当于compass(real(x),imag(x))。命令compass(x,y)以复数坐标系的原点为起点,绘制出带箭头的一组复数向量,其中向量x表示复数的实部,向量y表示复数的虚部。键入x=[-2+3j4j-5j-1];subplot(121),compass(x)y=[1-23-456];z=[-23-6-5-50];subplot(122),compass(y,z)可得2.4特殊二维图形向量图252.4特殊二维图形水平线向量图命令形式为feather(x)或feather(x,y)。feather命令与compass命令功能相似,两者的区别是起点不同。Compass命令起始于坐标原点,Feather命令起始于x向量各元素的序号。键入x=[-2+3j4j-5j-1];subplot(211),feather(x)y=[1-23-456];z=[-23-6-5-51];subplot(212),feather(y,z)可得2.4特殊二维图形水平线向量图262.5三维图形基本三维图形

plot3命令将绘制二维图形的函数plot的特性扩展到三维空间。函数格式除了包括第三维的信息(比如Z方向)之外,与二维函数plot相同。plot3一般语法调用格式是plot3(x1,y1,z1,S1,x2,y2,z2,S2,…),这里xn,yn和zn是向量或矩阵,Sn是可选的字符串,用来指定颜色、标记符号和/或线形。总的来说,plot3可用来画一个单变量的三维函数。如下图为一个三维螺旋线例子:键入t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)

grid回车可得2.5三维图形基本三维图形272.5三维图形三维图形的修饰与控制三维图形的修饰与控制方式与二维图形类似。例如键入命令t=0:pi/50:10*pi;plot3(sin(t),cos(t),t);title('Helix'),xlabel('sint(t)'),ylabel('cos(t)'),zlabel('t')text(0,0,0,'Origin')axis([-21-12035])gridholdonplot3(sin(t)-1,cos(t)+1,t)可得2.5三维图形三维图形的修饰与控制282.5三维图形特殊三维图形三维网格曲面三维网格曲面是连接三维空间的一些四边形所构成的曲面。首先介绍产生三维网格数据点的函数meshgrid。命令[X,Y]=meshgrid(x,y)将向量x(1*m),y(1*n)转换为三维网格数据矩阵X(n*m),Y(n*m)。键入[X,Y]=meshgrid([1234],[567])执行结果为X=123412341234Y=5555666677772.5三维图形特殊三维图形292.5三维图形三维网格曲面命令为mesh(x,y,z,c),mesh(x,y,z),mesh(z,c),mesh(z)。这四种命令格式都可以绘制三维网格曲面。当x、y是向量,length(x)=n,length(y)=m,在此,(m,n)=size(z),则(x(j),y(i),z(i,j))是网格的交点。当x、y是矩阵,则(x(i,j),y(i,j),z(i,j))是网格的交点。c表示网格曲面的颜色分布,若省略,则网格曲面的颜色与z方向上的高度值成正比。若x,y均省略,则三维网格数据矩阵取值x=1:n,y=1:m。其中,(m,n)=size(z)。键入x=-10:0.5:10;y=-8:0.5:8;[X,Y]=meshgrid(x,y);Z=sin(sqrt(X.^2+Y.^2))…./sqrt(X.^2+Y.^2);mesh(X,Y,Z)可得2.5三维图形三维网格曲面命令为mesh(302.5三维图形带等高线和包含零平面的三维网格曲面MATLAB的mesh有两个同种函数:meshc,它画网格图,还在XY平面上绘制曲面Z方向的等高线;meshz,它画包含零平面的网格图,即在XY平面上绘制曲面的底座。对于上述例题。如果接着键入命令meshc(X,Y,Z),可得左图;键入命令meshz(X,Y,Z),可得右图。

2.5三维图形带等高线和包含零平面的三维网格曲面312.5三维图形填充颜色的三维网格曲面

surf命令绘制的曲面和网格图看起来是一样的,只是各线条之间的空档用颜色加以填充。surf使用和mesh有相同的调用语法。例如上例给出的数据,键入surf(X,Y,Z)可得

2.5三维图形填充颜色的三维网格曲面322.5三维图形三维直方图

MATLAB提供了绘制三维直方图的命令:bar3和bar3h分别绘制垂直的和水平的三维直方图。bar3(Y)绘制一个三维的条形图,Y的每一个元素对应一个条形。当Y是一个向量时,x轴的范围从0到length(Y),当Y是一个矩阵时,x轴的范围从0到Y的行数,每一行的元素放在一起。bar3(x,Y)要求x是一个单调的向量,x指定Y中各行元素的间距,每一行的元素放在一起。bar3也可以带参数,即bar3(Y,’参数’)和bar3(x,Y,’参数’)。参数可以选择group(分组式的)、detached(分离式的)、stacked(累加式的),与二维绘图命令的参数选择一致。键入x=[102030;15,35,10;52025];subplot(131),bar3(x,'group');title('group')subplot(132),bar3(x,‘detached’);title('detached')subplot(133),bar3(x,'stacked');title('stacked')2.5三维图形三维直方图332.5三维图形可得键入subplot(131),bar3h(x,'group');title('group')subplot(132),bar3h(x,'detached');title('detached')subplot(133),bar3h(x,'stacked');title('stacked')可得2.5三维图形可得342.6图形用户界面设计

图形对象指图形系统中的基本图元。由图形命令产生的每一件东西都是图形对象。它们包括图形窗口或仅仅说是图形,还有坐标轴、线条、曲面、文本和其它。这些对象按父对象和子对象组成层次结构。计算机屏幕是根对象,并且是所有其它对象的父亲。图形窗口是根对象的子对象;坐标轴和用户界面对象是图形窗口的子对象;线条、文本、曲面、补片和图象对象是坐标轴对象的子对象。根可包含一个或多个图形窗口,每一个图形窗口可包含一组或多组坐标轴。所有其它的对象都是坐标轴的子对象,并且在这些坐标轴上显示。所有创建对象的函数当父对象或对象不存在时,都会创建它们。2.6图形用户界面设计图形对象35

MATLAB定义了10种图形对象:根对象(root)、图形窗口对象(figure)、轴对象(axes)、线对象(line)、块区域对象(patch)、面对象(surface)、图像对象(image)、文字对象(text)、菜单(menu)、控件对象(control)。在MATLAB中,每一个对象都有一个数字来标识,叫做句柄(handle)。每次创建一个对象时,就为它建立一个唯一的句柄。计算机屏幕作为根对象常常是0。2.6图形用户界面设计MATLAB定义了10种图形对象:根对象(roo362.6图形用户界面设计图形窗口的生成figure命令创建或打开一个图形窗口。其格式为:handle=figure(‘属性名’,属性值设置,…)根据设置的属性值创建一个新的图形窗口,变量handle中返回它的句柄值。例如HF=figure('name','newfigure');,该命令创建了一个名称为newfigure,其它属性为默认值的图形窗口。变量HF中返回它的句柄值。图形窗口的句柄为整数,其它对象句柄是MATLAB满精度的浮点值。MATLAB可以获得图形、坐标轴和其它对象的句柄。例如,Hf_fig=gcf返回当前图形窗口的句柄值,而Ha_ax=gca返回当前图形窗口内当前坐标轴的句柄值。

2.6图形用户界面设计图形窗口的生成372.6图形用户界面设计例如键入HF=figure('name','newfigure');回车可得下图。键入HF可得HF=1键入Hf_fig=gcf可得Hf_fig=12.6图形用户界面设计例如键入HF=figure('na382.6图形用户界面设计当建立一个对象时,它用一组缺省属性值,该值可以用两种方法来改变。可以用(属性名,属性值)对来建立对象生成函数;或者在对象建立后改变属性。前一种方法的例子是:键入Hf_1=figure('color','white')

它用缺省的属性值建立一个新的图形窗口,只是背景颜色被设为白色而不是缺省的黑色。

为了获得和改变句柄图形对象的属性只需要两个函数。函数get返回某些对象属性的当前值。使用函数get的最简单语法是get(handle,‘PropertyName’)。例如:键入p=get(Hf_1,'position')返回具有句柄Hf_1图形窗口的位置向量。函数set改变句柄图形对象属性,使用语法set(handle,‘PropertyName’,value)。例如:

set(Hf_1,‘Position’,p_vect)将具有句柄Hf_1的图形位置设为向量p_vect所指定的值。一般情况下,函数set可以有任意数目的(‘PropertyName’,PropertyValue)对。比如:

set(Hf_1,'name','newfigure','Color','r')将具有句柄Hf_1的名字变为newfigure,背景颜色变成红色。关闭图形窗口的命令是close(handle),可关闭handle所指定的图形窗口。2.6图形用户界面设计当建立一个对象时,它用一组392.6图形用户界面设计菜单的实现菜单是图形界面的重要组成,MATLAB提供几种生成菜单的方法。简单的菜单生成:menu命令可生成选择菜单,其格式为:handle=menu(标题字符串,菜单项目1,菜单项目2,…)例如执行k=menu('chooseaorder','open','save','exit')可得上图,当open键按下,k=1。

2.6图形用户界面设计菜单的实现402.6图形用户界面设计下拉菜单的实现采用如下几项命令,可以实现下拉菜单。mainmenu=uimenu(窗口句柄,’属性名’,属性值设置,…):以设置的属性值生成图形窗口主菜单。itemhandle=uimenu(mainmenu,’属性名’,属性值设置,…):以设置的属性值生成主菜单某项目的下拉菜单。submenu=uimenu(itemhandle,’属性名’,属性值设置,…):以设置的属性值创建子菜单。2.6图形用户界面设计下拉菜单的实现412.6图形用户界面设计键入HF=figure('name','newfigure');mymenu=uimenu(HF,'label','&order');uimenu(mymenu,'label','&choice1','call','image(magic(1))')uimenu(mymenu,'label','&choice2','call','image(magic(2))')uimenu(mymenu,'label','&choice3','call','image(magic(3))')可生成左图。在图形窗口标准的MATLAB菜单后生成order菜单,该菜单的项目有choice1,choice2,choice3,分别调用image(magic(1)),image(magic(2)),image(magic(3))函数。2.6图形用户界面设计键入HF=figure('name422.6图形用户界面设计对话框的实现对话框是一种弹出显示的单独窗口。它显示信息字符串,并提供一个或多个按钮或输入窗口供用户输入。几种常见的实现对话框的方法如下:普通对话框语句handlebox=dialog(‘属性名’,属性值设置,…),按指定的属性值,创建一个对话框窗口,并返回对话框句柄handlebox。例如键入hd=dialog('name','mybox','color',[111])回车可得右图,并且hd=106.00072.6图形用户界面设计对话框的实现432.6图形用户界面设计输入对话框创建输入对话框的语句形式如下:answer=inputdlg(字符串1)answer=inputdlg(字符串1,字符串2)answer=inputdlg(字符串1,字符串2,行数值)answer=inputdlg(字符串1,字符串2,行数值,字符串3)利用上述语句产生输入对话框,并把用户输入的字符串传给answer。字符串1表示各个输入窗口的提示信息,字符串2表示该对话框的名称,行数值表示输入窗口的输入行数,字符串3表示各个输入窗口的输入缺省值。键入prompt={'enterthematrixsize:','enterthecolormapname:'};def={'20','hsv'};title='inputforpeaksfunction';lineno=1;answer=inputdlg(prompt,title,lineno,def);可得2.6图形用户界面设计输入对话框创建输入对话框的语句442.6图形用户界面设计消息对话框创建消息对话框,语句形式如下:msgbox(字符串1)msgbox(字符串1,字符串2)msgbox(字符串1,字符串2,字符串3)msgbox(字符串1,字符串2,字符串3,字符串4)字符串1表示对话框中要显示的信息;字符串2表示对话框的名称;字符串3确定对话框的图标,其取值有‘none(默认值)’,‘error’,‘help’,‘warn’;字符串4确定对话框的产生模式,其取值有:‘modal’,’non-modal(默认值)’,’replace’。执行msgbox('createsamessagebox','warnbox','warn','modal')可得左图执行msgbox('createsamessagebox','helpbox','help','modal')可得右图2.6图形用户界面设计消息对话框创建消息对话框452.6图形用户界面设计标准文件对话框创建标准文件对话框的命令为

[filename,pathname]=uigetfile(‘filefilter’,’dialogtitle’)[filename,pathname]=uiputfile(‘filefilter’,’dialogtitle’)这两个命令都可以生成标准的文件名处理对话框:uigetfile生成打开文件对话框;uiputfile生成保存文件对话框。Filefilter指要处理的文件类型;dialogtitle确定对话框的标题。按对话框的取消按钮,则将0返回给变量filename和pathname;否则,将指定的文件名和路径名分别返回给变量filename和pathname。执行命令[name,path]=uigetfile('*.mat','saveas')可得左图。键入[name,path]=uiputfile('*.mat','saveas')可得右图2.6图形用户界面设计标准文件对话框创建标准文件对462.6图形用户界面设计控件设计技术在图形窗口或对话框窗口上的各种控件均可由下面的命令实现。handle=uicontrol(窗口句柄,’属性名’,属性值设置,…)设置的属性值在窗口句柄所指的窗口中实现一个控件。执行

HF=figure('name','myfigure');HC=uicontrol(HF,'style','pushbutton','position',[100,150,80,30],'string','dir')可得右图。在HF窗口上生成dir命令按钮。对于该按钮的各种属性,可以利用get(HC,’属性名’,…)获得,利用set(HC,’属性名’,’属性值设置’,…)命令进行修改。2.6图形用户界面设计控件设计技术472.6图形用户界面设计控件设计技术

部分常用的属性介绍:(1)callback属性:回调函数的设置,其属性值是字符串,该字符串可以代表一条或多条MATLAB命令,也可以是M文件,表示选中该控件后响应的函数。在设置回调函数时,如果引号、逗号和括号不正确输入,MATLAB将给出警告;但在复杂回调字符串中很难寻找错误的。为了使错误最少,对包含MATLAB语句的回调字符串请记住以下的一些规则:把整个回调字符串括在方括号中,不要忘记最后的右括号‘)’;把各语句括上单引号;已引用的字符串内,要用双引号,在引号后要用逗号或空格结尾;除了最后一句,各语句在引号内要以逗号或分号结尾;在引号后要用逗号或空格结尾;有后续行的各行要以三个句号(...)结尾。(2)enable属性:设置本控件是否有效。它取值有on(有效)、off(无效)和inactive(有效,但不能响应callback确定的函数)。(3)position属性:设置控件的位置。按[left(距离图形对象左边框长度),botton(距离图形对象底边框长度),width(控件宽度),height(控件高度)]来确定。(4)string属性:设置控件的显示字符。2.6图形用户界面设计控件设计技术482.6图形用户界面设计控件设计技术部分常用的属性介绍:(5)style属性:设置控件的类型。MATLAB提供的常用控件:checkbox(复选框)、edit(编辑框)、frame(框架)、listbox(列表框)、popupmenu(下拉菜单)、pushbutton(命令按钮)、radiobutton(单选按钮)、slider(滑块)、text(静态文字)。(6)visible属性:设置该控件的可见性。它取值有on(可见)、off(不可见)。下面是一个利用控件技术设计的例子,程序如下:2.6图形用户界面设计控件设计技术492.6图形用户界面设计mywin=figure('position',[100,100,400,300],'name','mywindows')myaxes=axes('box','on','unit','points','position',[100,20,190,200])colorstr=['r','b','k']linestr=['-',':']colornum=1x=0:0.01:2*pi;fun=plot(x,sin(x),union(colorstr(colornum),linestr(1)))cbox=uicontrol(mywin,'style','listbox','position',[20,240,80,30],...'string','red|blue|black','callback',['colornum=get(cbox,''value''),',...'set(fun,''color'',colorstr(colornum))'])pushbutton1=uicontrol(mywin,'style','pushbutton','position',[20,80,80,30],'string','实线','callback',...'fun=plot(x,sin(x),union(colorstr(colornum),linestr(1)))')pushbutton1=uicontrol(mywin,'style','pushbutton','position',[20,160,80,30],'string','虚线','callback',...'fun=plot(x,sin(x),union(colorstr(colornum),linestr(2)))')2.6图形用户界面设计mywin=figure('pos502.6图形用户界面设计上述程序执行的结果如下图所示:2.6图形用户界面设计上述程序执行的结果如下图所示:512.7图形用户界面(GUI)的应用从上节可以看到,创建完整的图形界面是一种比较繁重的工作,要对每一个图形对象关键属性进行确定。MATLAB提供了一种可视化设计工具guide,可以直接利用guide进行菜单设计、控件的编排和设定、回调函数的编辑等。GUI设计很简单,直接用鼠标或键盘增减图形对象,并可将几个图形对象加到一个图形上,增强了可视性。在matlab命令窗口中键入guide命令,可得到右图所示的设计窗口。其中方框内的窗口区域就是要设计的窗口雏形。双击该窗口雏形,可得到窗口属性对话框,用户可以通过该对话框来改变窗口属性。例如想修改窗口的颜色,可在color栏目下单击其右侧方框,通过调整其红、绿、兰颜色的配比,得出所需要的颜色。2.7图形用户界面(GUI)的应用从上节522.7图形用户界面(GUI)的应用在设计窗口左侧的工具栏中,提供了各种各样的控件,可以选中所需控件,将其拖至雏形窗口,实现用户界面的设计。例:在窗口添加一个按钮和一个文本控件,按下按钮时,文本控件上显示“这是我的第一个界面”字样。在雏形窗口绘制出这两个控件,如图所示需要修改文本控件的属性,双击其图标,将其String属性设置为空字符串,表示在按下按钮前不显示任何信息;给该控件设置一个标签,即设置其tag属性,以便在后面编程时容易找到其句柄,这里将其设置为texthello,如下图所示。建立控件后,将其存为c2fguil.fig,这时还将自动生成一个c2fguil.m文件。下面给按钮编写回调函数,右击按钮控件,选择【viewcallback】中的【callback】项。2.7图形用户界面(GUI)的应用在设计532.7图形用户界面(GUI)的应用选择【callback】项后,系统自动打开c2fguil.m文件,在文件中生成一个回调子函数的框架:functionvarargout=pushbutton1_Callback(h,eventdata,handles,varargin)其中,h为当前窗口的句柄,handles是该窗口中的句柄集,每个控件的句柄可由设置的标签直接访问。因此只需编写如下子函数:set(handles.texthello,'string','这是我的第一个界面')在MATLAB命令窗口键入c2fguil,可得2.7图形用户界面(GUI)的应用选择【542.7图形用户界面(GUI)的应用例2:应用GUI方法设计三维网格曲面图图形界面。执行guide命令,打开设计窗口。从工具栏中选中坐标系控件,将其置入雏形窗口,并将其拖拉出希望大小的轴系。用同样的方法在雏形窗口上创建三个按钮,如图所示。双击第一个按钮,打开该按钮的属性对话框,将其String属性设置为mesh,即将第一个按钮命名为mesh,用同样的方法将第二个按钮命名为meshc,第三个按钮命名为meshz。将该窗口保存为Chapter2exam.fig。2.7图形用户界面(GUI)的应用例2:应用GUI方法设552.7图形用户界面(GUI)的应用编辑第一个按钮的回调函数。右击该按钮,选择【callback】选项,系统自动打开Chapter2exam.m文件,并指向自动生成的回调子函数:functionvarargout=pushbutton1_Callback(h,eventdata,handles,varargin)。在该子函数下输入x=-10:0.5:10;y=-8:0.5:8;[X,Y]=meshgrid(x,y);Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);mesh(X,Y,Z)。再用同样的方法编辑第二个按钮和第三个按钮的回调函数meshc(X,Y,Z)和meshz(X,Y,Z),保存m文件。在matlab命令窗口键入chapter2exam,回车可得2.7图形用户界面(GUI)的应用编辑第一个56matlab图形与可视化课件57matlab图形与可视化课件58

59第二章图形与可视化2.1二维绘图的plot命令

2.2图形修饰与控制

2.3特殊坐标二维图形

2.4特殊二维图形

2.5三维图形2.6图形用户界面设计2.7图形用户界面(GUI)的应用第二章图形与可视化2.1二维绘图的plot命令602.1二维绘图的plot命令MATLAB最常用的二维绘图命令是plot命令,该命令最直接的调用格式是plot(x,y)。如果想绘制一个周期内的正弦曲线,可在窗口键入t=0:.1:2*pi;y=sin(t);plot(t,y),可得左图。MATLAB下还允许在一个绘图窗口上绘制多条曲线,例如下面的命令

t=0:.1:2*pi;y=[sin(t);cos(t)];plot(t,y),可得右图。2.1二维绘图的plot命令MATLAB最612.1二维绘图的plot命令可以看出,在一个窗口绘制多条曲线时,MATLAB会自动用不同颜色将图形显示出来。此外,MATLAB还提供了plotyy()函数来绘制曲线。不同的是该函数绘制出来的曲线坐标轴两边均有标注,此函数允许两条幅值相差悬殊的曲线在同一幅图上绘制出来,而不影响观察效果。该函数的调用格式为plotyy(t,y1,t1,y2)。例如键入

t=0:.1:2*pi;plotyy(t,sin(t),t,0.01*cos(t))回车可得2.1二维绘图的plot命令可以看出,在一个622.1二维绘图的plot命令MATLAB提供了一些绘图的选项。带有选项的曲线绘制命令的调用格式为:plot(x1,y1,’选项1’,x2,y2,’选项2’,…)。各种选项包括颜色控制符、线型控制符、数据点标记字符。详情见教材78页表2-1、2-2、2-3。不同选项可以连在一起使用,例如选项‘r:o’,”r”表示曲线颜色为红色,“:”表示线型采用点线绘制,“o”表示曲线每一个数据点处用圆圈标出。例如

t=0:.2:2*pi;plot(t,sin(t),‘r:o’)回车可得2.1二维绘图的plot命令MATLAB提632.2图形修饰与控制坐标轴的调整1、MATLAB可以自动根据要绘制的曲线数据的范围选择合适的坐标系,使得曲线尽可能清晰地显示出来,所以一般情况下用户不必担心坐标范围的选择。但是用户如果感到自动选择的坐标不合适,可以用手动的方式来选择新的坐标系范围。该工作可以调用axis()函数来完成。该函数的调用格式为:axis([xmin,xmax,ymin,ymax])。可以将图形的x轴范围限定在[xmin,xmax]之间,y轴范围限定在[ymin,ymax]之间。如果除了以上四个参数之外用户还指定了zmin,zmax,则MATLAB在绘制三维曲线时会参照指定的三个坐标轴的范围来绘制最终的图形。2、命令axis控制字符串可以根据控制字符串的功能控制图形。例如axissquare命令可将图形设置为正方形。控制字符串的功能详见教材79页表2-4。2.2图形修饰与控制坐标轴的调整642.2图形修饰与控制坐标刻度标示命令:set(gca,’xtick’,标示向量)set(gca,’ytick’,标示向量)按照标示向量设置的x,y轴的刻度标示。在窗口键入t=0:.1:2*pi;y=sin(t);plot(t,y)set(gca,‘xtick’,[01.43.1456.28])可得左图。命令set(gca,'xticklabel','0|1.4|half|5|one')可以改变x轴的标注点,横轴用字符串标注,如右图所示。2.2图形修饰与控制坐标刻度标示652.2图形修饰与控制文字标示有关图形的标题和轴线标注等的指令有:title(‘字符串’)——图形标题xlable(‘字符串’)——x轴标注ylable(‘字符串’)——y轴标注text(x,y,’字符串’)——在坐标(x,y)处标注说明文字gtext(‘字符串’)——用鼠标在特定处标注说明文字输入特定的文字需要用反斜杠(\)开头,用法如教材81页表2-5。网格控制网格是在坐标刻度标示上画出的格线,便于对曲线进行观察和分析。命令gridon——在所画的图形中添加网格线;gridoff—在所画的图形中去掉网格线;也可以只输入命令grid添加网格线,再输入一次命令grid,则去掉网格线。2.2图形修饰与控制文字标示662.2图形修饰与控制键入t=0:.1:2*pi;y=sin(t);plot(t,y)xlabel('t(deg)')ylabel('magnitude(V)')title('thisisanexample0\leftarrow2\pi')%use‘TextProperties’tosearchtext(3.14,sin(3.14),'\leftarrowthisiszerofor\pi')grid可得2.2图形修饰与控制键入t=0:.1:2*pi;y=s672.2图形修饰与控制图例注释

当在一个坐标系上画有多幅图形时,为区分各个图形,MATLAB提供了图例的注释说明。格式为:

legend(字符串1,字符串2,…,参数)此命令在图形中开启一个注解视窗,依据绘图的先后顺序,依次输出字符串对各个图形进行注解说明。如字符串1表示第一个出现的线条,字符串2表示第二个出现的线条,参数字符串确定注解视窗在图形中的位置,含义为右表中所示。注解视窗可以用鼠标拖动,放在合适的位置。参数字符串含义0尽量不与数据冲突,自动放置在最佳位置1放置在图形的右上角(默认)2放置在图形的左上角3放置在图形的左下角4放置在图形的右下角-1放置在图形视窗外右边2.2图形修饰与控制图例注释参数字符串含义0尽量不与数682.2图形修饰与控制键入命令t=0:.1:2*pi;plot(t,sin(t),'-',t,1.5*cos(t),':');legend('first','second')

回车可得2.2图形修饰与控制键入命令t=0:.1:2*pi;692.2图形修饰与控制图形的保持

用plot命令绘图时,首先将当前图形窗口清屏,再绘制图形,所以只能见到最后一个plot命令绘制的图形。为了能利用多条plot命令绘制多幅图形,就需要保持窗口上的图形。hold命令用于保持当前的图形,不影响坐标轴的特性;holdon命令保持当前的图形及轴系的所有特性;holdoff用于解除holdon命令。键入t=0:.1:2*pi;plot(t,sin(t),'-');holdon;plot(t,1.5*cos(t),':')回车可得

2.2图形修饰与控制图形的保持702.2图形修饰与控制图形窗口的分割

MATLAB绘图命令可以将绘图窗口分割成几个区域,在各个区域中分别绘图。命令subplot(m,n,p)将当前绘图窗口分割成m行n列区域,并指定第p个编号区域为当前绘图区域。区域编号的原则是“先上后下,先左后右”。MATLAB允许每个编号区域可以以不同的坐标系单独绘图。m,n和p前面的逗号可以省略。键入t=0:.1:2*pi;y1=sin(t);y2=1.5*cos(t);y3=sin(2*t);y4=5*cos(2*t);subplot(221);plot(t,y1);title('sin(x)');subplot(222);plot(t,y2);title('cos(x)');subplot(223);plot(t,y3);title('sin(2x)');subplot(224);plot(t,y4);title('cos(2x)');回车可得2.2图形修饰与控制图形窗口的分割712.2图形修饰与控制2.2图形修饰与控制722.2图形修饰与控制图形的填充

fill命令用于填充二维封闭多边形。命令fill(x,y,’color’)在由数据x,y所构成的多边形内,用color所指定的颜色填充。如果该多边形不是封闭的,可以用初始点和终点的连线封闭。color控制符见教材78页表2-1的说明。键入t=0:.05:7;y=sin(t);fill(t,y,'k')回车可得2.2图形修饰与控制图形的填充732.3特殊坐标二维图形对数坐标图形semilogx(x,y,参数)绘制半对数坐标图形,其x轴取以10为底的对数坐标,y轴为线性坐标。semilogy(x,y,参数)绘制半对数坐标图形,其y轴取以10为底的对数坐标,x轴为线性坐标。loglog(x,y,参数)绘制x,y轴都取以10为底的对数坐标图形。其中参数说明参阅plot命令。键入x=0:0.5:20;y=10.^x;subplot(221),semilogx(x,y);title('semilogxgraph')subplot(222),semilogy(x,y);title('semilogygraph')subplot(223),loglog(x,y);title('logloggraph')subplot(224),plot(x,y);title('lineargraph')回车可得2.3特殊坐标二维图形对数坐标图形742.3特殊坐标二维图形

2.3特殊坐标二维图形752.3特殊坐标二维图形极坐标图形

polar(theta,radius,参数)命令绘制相角为theta,半径为radius的极坐标图形。键入t=0:0.01:pi;r=sin(t);polar(t,r)回车可得2.3特殊坐标二维图形极坐标图形762.4特殊二维图形函数图形

fplot(‘函数运算式’,[xminxmax])命令用来绘制给定函数在区间[xminxmax]内的变化图形。例如执行命令

fplot('sin(3*x)',[04]);grid可以画出y=sin(3x),其中x在0到4之间变化的图形。2.4特殊二维图形函数图形772.4特殊二维图形饼图饼图在统计中常用来表示各因素所占的百分比。命令pie(x)或pie(x,explode)根据矩阵或者向量x绘制饼图,以表示各数据占sum(x)的百分比。若x为向量,该命令绘制x的每一元素占全部向量元素总和的百分比饼图,如x为矩阵,该命令绘制x的每一元素占全部矩阵元素总和的百分比饼图。参数explode表示对应的扇形图是否从整个饼图中分离出来,若非零,则分离出来,它的维数应与x相同。键入x=[121;341];(按列逆时针)pie(x,[100;001])可得2.4特殊二维图形饼图782.4特殊二维图形条形图

条形图用来表示一些数据的对比情况。MATLAB提供了两类条形图的命令:垂直方向的条形图和水平方向的条形图。垂直方向的条形图命令bar(x,width)或bar(x,’参数’)根据矩阵和向量x绘制条形图。若x为向量,则以其各元素的序号为各个数据点的横坐标,以x向量的各个元素为纵坐标,绘制一个垂直方向的条形图。若x为矩阵,同时参数字符串为group或者缺省,则以其各行号为横坐标,每一行分别以列的各元素为纵坐标,绘出一组垂直方向的条形图。若参数字符串为stack,则以其各行号为横坐标,每一行以列向量的累加值为纵坐标,绘出一个垂直方向的分组式条形图。Width给定条形的宽度,缺省值为0.8,若该值大于1,则条形图重叠。2.4特殊二维图形条形图792.4特殊二维图形键入x=[10,20,30;15,35,10;5,20,25];subplot(121),bar(x,'group')subplot(122),bar(x,'stack')

回车可得2.4特殊二维图形键入x=[10,20,30;15,35802.4特殊二维图形水平方向的条形图水平方向的条形图命令形式与垂直方向条形图命令相同。命令为barh(x,width)或者barh(x,’参数’)。键入x=[10,20,30;15,35,10;5,20,25];subplot(121),barh(x,'group')subplot(122),barh(x,'stack')回车可得2.4特殊二维图形水平方向的条形图812.4特殊二维图形梯形图梯形图可以用来表示系统中的采样数据。命令形式为stairs(x)或者stairs(x,y),其中,x、y均为向量。stairs(x)命令绘制以x的向量序号为横坐标,以x向量的各个对应元素为纵坐标的梯形图。stairs(x,y)命令绘制以向量x的各个对应元素为横坐标,以y向量的各个对应元素为纵坐标的梯形图。键入x=0:.1:7;y=sin(x);stairs(x,y)回车可得2.4特殊二维图形梯形图822.4特殊二维图形概率分布图

研究随机系统时,常常要用到概率分布图。MATLAB提供hist命令来绘制概率分布图。命令hist(y,x)绘制y在以x为中心的区域中分布的个数条形图。例如,x是一个5元素的矢量,hist将y的元素分成5条,每条在x轴的中心是x元素。键入x=-2:0.5:2;y=randn(10000,1);(零均值单位方差正态分布)hist(y,x)

可得右图即y数组中,在-2附近的数据约有400个,在-1.5附近的数据约有700个,等等。2.4特殊二维图形概率分布图832.4特殊二维图形向量图原点向量图命令compass(x)绘制相对于原点的向量图,若x为复数,compass(x)命令相当于compass(real(x),imag(x))。命令compass(x,y)以复数坐标系的原点为起点,绘制出带箭头的一组复数向量,其中向量x表示复数的实部,向量y表示复数的虚部。键入x=[-2+3j4j-5j-1];subplot(121),compass(x)y=[1-23-456];z=[-23-6-5-50];subplot(122),compass(y,z)可得2.4特殊二维图形向量图842.4特殊二维图形水平线向量图命令形式为feather(x)或feather(x,y)。feather命令与compass命令功能相似,两者的区别是起点不同。Compass命令起始于坐标原点,Feather命令起始于x向量各元素的序号。键入x=[-2+3j4j-5j-1];subplot(211),feather(x)y=[1-23-456];z=[-23-6-5-51];subplot(212),feather(y,z)可得2.4特殊二维图形水平线向量图852.5三维图形基本三维图形

plot3命令将绘制二维图形的函数plot的特性扩展到三维空间。函数格式除了包括第三维的信息(比如Z方向)之外,与二维函数plot相同。plot3一般语法调用格式是plot3(x1,y1,z1,S1,x2,y2,z2,S2,…),这里xn,yn和zn是向量或矩阵,Sn是可选的字符串,用来指定颜色、标记符号和/或线形。总的来说,plot3可用来画一个单变量的三维函数。如下图为一个三维螺旋线例子:键入t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)

grid回车可得2.5三维图形基本三维图形862.5三维图形三维图形的修饰与控制三维图形的修饰与控制方式与二维图形类似。例如键入命令t=0:pi/50:10*pi;plot3(sin(t),cos(t),t);title('Helix'),xlabel('sint(t)'),ylabel('cos(t)'),zlabel('t')text(0,0,0,'Origin')axis([-21-12035])gridholdonplot3(sin(t)-1,cos(t)+1,t)可得2.5三维图形三维图形的修饰与控制872.5三维图形特殊三维图形三维网格曲面三维网格曲面是连接三维空间的一些四边形所构成的曲面。首先介绍产生三维网格数据点的函数meshgrid。命令[X,Y]=meshgrid(x,y)将向量x(1*m),y(1*n)转换为三维网格数据矩阵X(n*m),Y(n*m)。键入[X,Y]=meshgrid([1234],[567])执行结果为X=123412341234Y=5555666677772.5三维图形特殊三维图形882.5三维图形三维网格曲面命令为mesh(x,y,z,c),mesh(x,y,z),mesh(z,c),mesh(z)。这四种命令格式都可以绘制三维网格曲面。当x、y是向量,length(x)=n,length(y)=m,在此,(m,n)=size(z),则(x(j),y(i),z(i,j))是网格的交点。当x、y是矩阵,则(x(i,j),y(i,j),z(i,j))是网格的交点。c表示网格曲面的颜色分布,若省略,则网格曲面的颜色与z方向上的高度值成正比。若x,y均省略,则三维网格数据矩阵取值x=1:n,y=1:m。其中,(m,n)=size(z)。键入x=-10:0.5:10;y=-8:0.5:8;[X,Y]=meshgrid(x,y);Z=sin(sqrt(X.^2+Y.^2))…./sqrt(X.^2+Y.^2);mesh(X,Y,Z)可得2.5三维图形三维网格曲面命令为mesh(892.5三维图形

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论