MATLAB应用第五章-MATLAB图形和3D可视化_第1页
MATLAB应用第五章-MATLAB图形和3D可视化_第2页
MATLAB应用第五章-MATLAB图形和3D可视化_第3页
MATLAB应用第五章-MATLAB图形和3D可视化_第4页
MATLAB应用第五章-MATLAB图形和3D可视化_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第五章MATLAB图形和3D可视化

MATLAT可将计算结果以丰富的图象形式表现出来,便于用户进行观察分析。5.1MATLAB图形窗口5.2二维曲线图形5.3三维曲线图形5.4高维可视化5.5色彩处理5.6光源位置和材质处理5.7句柄图形5.8动画制作5.1MATLAB图形窗口图形窗口调用的三种常见方式:(ObjectOriented)figure命令窗口中输入figure将产生一新的默认属性的图形窗口,且置为当前;figure(h)可有三种结果:1)若h为已定义的句柄,则使该图形置为“当前”2)若h为一整型参数,则建立一新图形并赋值为h且置为当前3)若非上述两种情况,则出现错误gcf返回当前图形的句柄,set用于设置图形的属性subplot将图形窗口进行分割显示,图形修改方式。subplot(m,n,i):将图形分为m*n个小块并把当前命令绘制图形放在第i个(按行计数)。get(gca)用于获取某小块图形的属性Subpolt(‘position’,[leftbottomwidthheight])用于定义指定区域的图形axes。holdHold用于叠加图形Holdon(off)、ishold、hold等Eg5-1Eg5-2Eg5-3在命令窗口输入figure出现下图Eg5-1之figure在命令窗口输入

>>figure(2223)Eg5-1之figure(integer)>>figure(h)

???Undefinedfunctionorvariable'h'.

>>h=2

h=

2

>>figure(h)

>>h='iwanttotry'

h=

iwanttotry

>>figure(h)

???Errorusing==>figure

Singleinputmustbeanexistingfigurehandleorascalarintegerfrom1to2032118656.Eg5-1续得到同上页的图形界面,等于figure(2)>>set(1,‘visible’,‘off’)%将句柄为1的图形隐藏起来>>figure%此时作为1的图形不再显示,而是生成另一个以2作为句柄的图形>>set(1,‘visible’,‘on’)%句柄为1的图形再次显示>>a1=axes;>>set(a1,'position',[0.050.550.90.4]);>>a2=axes;>>set(a2,'position',[0.050.050.40.4]);>>a3=axes;>>set(a3,'position',[0.550.050.40.4]);>>a=[1:200]*pi/100;>>s=sin(a);>>c=cos(a);>>t=1+a.*a;>>axes(a1);>>plot(a,s);>>axes(a2);>>plot(a,c);>>axes(a3);>>plot(a,t);先定义在哪个窗口画图,然后输入绘图命令定义图框1、2、3,[xy宽高]Eg5-2>>subplot(2,2,1)%将图形分为2*2的块并将第1块激活>>plot(a,s)%在上述的一块上绘制函数图>>subplot(2,2,4)>>plot(a,c)Eg5-2续>>a=[1:200]*pi/100;>>s=sin(a);>>c=cos(a);>>t=1+a.*a;>>plot(a,s,'r')>>holdon

%叠加图象>>plot(a,c,'b')>>plot(a,t,'k:')Eg5-35.2二维曲线图形(plot)5.2.1plot命令的调用plot(X,’s’),其中X为:1)实向量,则以向量下标为横坐标,元素值为纵坐标绘图;2)实矩阵(m,n),按列元素绘制,共n条曲线;3)复数矩阵,实部为横坐标,虚部为纵坐标,绘制多条曲线;S用来指定线条的相关特性plot(X,Y,’s’),其中:1)X,Y为同维向量时,X作为横坐标,Y为纵坐标绘图;2)X为向量,Y为有一维与X等维的矩阵时,绘制多条曲线;3)X为矩阵,Y为向量,同2);4)X,Y同维矩阵,则绘制对应列元素分别为横纵坐标的曲线;plot(X1,Y1,’s1’,X2,Y2,’s2’…)以Xi,Yi,’si’为一组合分别设置绘图Eg5-4、5在editor内输入如下命令并存为”Plot_eg01”x=0:0.02:20;y=sin(x);z=cos(x)+1;subplot(2,2,1)plot(x,y,'r-')%xandyarevectorsxlabel('xaxis')ylabel('y=sin(x)')subplot(2,2,2)plot(x,'k--')%onlyplotxsubplot(2,2,3)plot(x,[y;z])%[y;z]isamatrixsubplot(2,2,4)plot(x,y,'r-.',x,z,'m-')F5运行结果如图Eg5-4在editor内输入如下命令并存为”Plot_eg02”th=[0:pi/50:3*pi]';a=[0.5:0.5:5.5]Y=cos(th)*a;X=sin(th)*sqrt(25-a.^2);plot(X,Y)axis('equal')xlabel('X')ylabel('Y')title('agroupofEllipselines')F5运行结果如图Eg5-5若没有axis(‘equal’)则显示如下:

equal将x和y轴的坐标进行比例协调,使其显示相等。5.2.2线型、顶点标记和颜色色彩(c)说明数据点(m)说明线型(l)说明r红色+加号-实线g绿色O圆圈--虚线b蓝色*星号:点线c青色.点-.点划线m洋红x十字y黄色s矩形k黑色d菱形w白色^上三角v下三角>右三角<左三角p五边形h六边形Eg5-6>>x=-5:5;>>y=x^2+1;>>plot(x,y,'ro')Eg5-6>>plot(x,y,'ro-.')>>plot(x,y,'o-.r')Eg5-6续线型用单引号,三种性质可任意组合。5.2.3分格线控制和图形标注分格线控制默认状态时网格关,线框开。grid:网格双向切换gridon:绘出网格gridoff:关闭网格box:线框双向切换boxon:绘出线框boxoff:关闭线框图形标注

坐标轴名:xlabel、ylabel等,采用格式如xlabel(‘text’,’p1’,’p1value’,’p2’,’p2value’…)标题:title,采用格式同xlabel图例:legend,采用格式:legend(str1,str2,str3,…,pos),其中pos取0~4,分别对应最佳、右上、左上、左下、右下位置。添加文本字符串text(x,y,’string’)gtext(‘string’,’p1’,’p1value’…)Eg5-7Eg5-8Eg5-9>>x=-5:5;>>y=x^2+1;>>plot(x,y,'ro')>>gridEg5-7>>plot(x,y,'o-.r')>>boxoffEg5-7续>>t=0:0.2:2*pi;>>plot(t,sin(t),'>',t,cos(t),'+');>>xlabel('x'),ylabel('y');>>title('sin(x)andcos(x)');>>legend('sin

wave','coswave',0)Eg5-8在编辑器里输入下列命令存为“exno32.m”x=0:0.1:8;plot(x,sin(x),x,cos(x))title('subject主题')%figure'ssubjectxlabel('\alpha')%ylabel('h^2')legend('1','2')text(pi/4,sin(pi/4),'\leftarrowsin(pi/4)=0.707')gtext('youcanpushyourleftbuttonanywhereinthedrawing','fontsize',20)Eg5-95.2.4特殊二维图形条形图bar、barh、bar3、bar3hbar(Y):Y值为条形图,横坐标为1:m;bar(x,Y):bar(...,width)bar(...,'style')bar(...,'bar_color')直方图hist、rose另stem

hist:在直角坐标系里绘制直方图rose:在极坐标中绘制直方图stem:显示茎状图扇形图piepie(x):对所有向量x中的元素进行总计,显示每一部分所占比例pie(x,explode):定义一个与x同长度向量explode,对应于非零元素的x值被抽出显示pie(…,labels):标注扇形图,labels必须与前面向量具有相同长度Eg5-10Eg5-11Eg5-12在命令窗口输入下列命令”>>x=1:12;>>y=[-12-6411232636302117103];>>bar(x,y)>>xlabel('month'),ylabel('tempereature');>>title('relationship')Eg5-10在编辑器窗口输入下列命令并存为bar_eg02”x=1:12;y=[-12-6411232636302117103;-13-15-27172720211413104];y=y';colormap(cool)subplot(211)bar(x,y,'grouped')subplot(212)bar(x,y,'stacked')Eg5-10续在编辑器窗口输入下列命令并存为hist_rose_eg”y=randn(1500,1);subplot(221)hist(y)%10equallyspacedcontainerstitle('hist(y)')subplot(222)hist(randn(1500,1),30)%30equallyspacedcontainerstitle('hist(y,30)')subplot(223)hist(randn(1500,2),10)%twocolumsineachofthe10equallyspace

containerstitle('hist(y(n,2),10)')%useofrosewdir=[45909045360335360270335270335335];wdir=wdir*pi/180;subplot(224)rose(wdir)title('rose(wdir)')Eg5-11Eg5-11续在编辑器窗口输入下列命令并存为pi_eg”x=[4354.52];explode=[00100];subplot(221)pie(x,explode)subplot(221)colormapjetsubplot(222)pie(x)subplot(223)pie(x,{'No.1got4','No.2got3','No.3got5','No.4got4.5','No.5got2'})subplot(224)a=[11111]pie(x,a,{'No.1got4','No.2got3','No.3got5','No.4got4.5','No.5got2'})Eg5-12Eg5-12续绘制二维图形命令汇总详见表5-3注意zoom和ginput函数:zoom:缩放双向切换zoom(x):放大x倍zoomon:缩放开zoomoff:缩放关zoomxon:只允许x轴缩放zoomyon:只允许y轴缩放[x,y]=ginput(n):将鼠标点击图形范围内,返回点击点的坐标值,存为长度为n的向量[x,y]=ginput:获取任意个点击点的坐标值,直至回车结束,存为点击数的向量[x,y,button]=ginput(n):将鼠标点击图形范围内,返回点击点的坐标值和点击鼠标左中右键(分别为1、2、3)情况,存为长度为n的向量特殊坐标的二维图形

对数坐标曲线:semilogx,semilogy,loglog极坐标曲线:polar双y轴曲线:plotyyEg5-15/6Eg5-13/4在编辑器窗口输入下列命令并存为zoom_eg”x=[4354.52];explode=[00100];pie(x,explode)title('zoom(2)','fontsize',30)zoom(2)Eg5-13在命令窗口输入:>>figure得到一figure如图,进一步在命令窗口输入:

[x,y]=ginput(6)并回车,此时进入figure,鼠标成十字型,点击鼠标(不论左中右)6次后返回x,yx=0.12790.44820.29150.64860.80990.7869y=0.82600.72370.34060.18270.39910.8523Eg5-14在编辑窗口输入下列命令并存为“special.m”:x=1:50;subplot(221)semilogx(x)title('semilogx','fontsize',24,'color','c')subplot(222)semilogy(x)title('semilogy','fontsize',20,'color','r')subplot(223)loglog(x)title('loglog','fontsize',12,'color','k')subplot(224)polar(x,x)title('polar','fontsize',24,'color','m')Eg5-15Eg5-15续在编辑窗口输入下列命令并存为“plotyy_eg.m”:x=0:0.01:20;y1=200*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);subplot(211)[AX,H1,H2]=plotyy(x,y1,x,y2,'plot');set(get(AX(1),'Ylabel'),'String','LeftY-axis')set(get(AX(2),'Ylabel'),'String','RightY-axis')xlabel('Zeroto20\musec.')title('Labeling

plotyy')set(H1,'LineStyle','--')set(H2,'LineStyle',':')subplot(212)plotyy(x,y1,x,y2)Eg5-165.3三维曲线图形5.3.1plot3命令的调用plot3(x,y,z,s):绘制空间曲线,xyz为三组向量或矩阵,单一向量为一条曲线,矩阵则为多条曲线,其他应用同二维绘图命令plot。Eg5-17在editor内输入下列命令“plot3_eg01.m”t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)gridonaxissquareEg5-175.3.2线、面填色PatchFill在editor内输入下列命令“patch_eg.m”%2-dpatchx=[0110];y=[0011];subplot(3,3,1:3)plot(x,y)patch(x,y,'b')patch([010],[001],'r')%3-dpatchx=[011000;110011;110011;011000];y=[001100;011000;011011;001111];z=[000001;000001;111101;111101];subplot(3,3,[4578])plot3(x,y,z)xlabel('x','fontweight','bold');ylabel('y','fontweight','bold');zlabel('z','fontweight','bold');fill3(x,y,z,'y')patch(x(:,1),y(:,1),z(:,1),'g')Eg5-17Eg5-17网格图:mesh(x,y,z,c)、mesh(x,y,z)、mesh(z)、mesh(z,c)、meshhc、meshz曲面图:surf(x,y,z,s)、surf(x,y,z)、surf(z)、shading、surface、5.3.3网格图和曲面图Eg5-18Eg5-19%编辑脚本文件如下,存为“mesh_eg.m”,[x,y,z]=peaks(40);subplot(221)mesh(x,y,z)title('mesh','fontsize',20,'color','r')subplot(222)meshc(x,y,z)title('mesh','fontsize',20,'color','b')subplot(223)meshz(x,y,z)title('mesh','fontsize',20,'color','k')subplot(224)[x,y]=meshgrid([-3:0.2:3]);z=peaks(x,y);mesh(x,y,z);title('mesh','fontsize',20,'color','m')holdonplot3(x,y,z,'x','Markersize',5)Eg5-18%编辑脚本文件如下,存为“surf_eg.m”,subplot(331)surf(peaks)title('surforshadingfaceted','fontsize',20,'color','r')subplot(332)surf(peaks)shadingflattitle('surfandshadingflat','fontsize',20,'color','b')subplot(333)surf(peaks)shadinginterptitle('surfandshadinginterp','fontsize',20,'color','m')subplot(334)surfc(peaks)title('surfc','fontsize',20,'color','k')Eg5-19subplot(335)surfl(peaks)title('surfl','fontsize',20,'color','g')shadinginterpsubplot(336)mesh(peaks)surface(peaks)title('surface','fontsize',20,'color','r')subplot(337)surface(peaks)title('surface','fontsize',20,'color','b')subplot(338)waterfall(peaks)title('waterfall','fontsize',20,'color','b')Contour(z)Contour(x,y,z)Contour(z,n)Contour(x,y,z,n)Contour(z,v)Contour(x,y,z,v)[c,h]=Contour(…)5.3.4等高线图形contour和contour3Eg5-20%编辑脚本文件如下,存为“contour_eg.m”,subplot(221)contour(peaks)title('contour','fontsize',20,'color','r')subplot(222)contour3(peaks)title('contour3','fontsize',20,'color','b')subplot(223)[c,h]=contour(peaks)clabel(c,h)title('clabel','fontsize',20,'color','m')subplot(224)contourf(peaks,16)title('contourf','fontsize',20,'color','b')Eg5-20视角改变:默认的三维视角方向仰角为30°,方位角为-37.5°;默认的二维图形方向仰角为90°,方向角为0°。视角即我们观察图形的方向,函数view可改变所有类型的二维和三维图形的图形视角。曲面裁剪:曲面图不能做成透明状,所以要裁剪需要将裁剪处的数据置为Nan来实现。5.3.5视角改变和曲面裁剪Eg5-21%编辑脚本文件如下,存为“view_eg.m”,subplot(221)surf(peaks)subplot(222)surf(peaks)view(90,0)%equaltoview([90,0])subplot(223)surf(peaks)view([1,5,6])[X,Y,Z]=peaks(30);x=X(1,:);y=Y(:,1);i=find(y>-.1&y<1.8);j=find(x>-0.6&x<1);Z(i,j)=nan*Z(i,j);subplot(224)surf(X,Y,Z)Eg5-215.4高维可视化Slice函数用不同的颜色绘制三元函数的空间分布片状图,实现一般定义在xyz坐标系上的四维可视化。Eg5-22%编辑脚本文件如下,存为“slice_eg.m”,[x,y,z]=meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);v=x.*exp(-x.^2-y.^2-z.^2);xslice=[-1.2,.8,2];yslice=2;zslice=[-2,0];slice(x,y,z,v,xslice,yslice,zslice)colormap

hsv5.5色彩处理多数时候,仅靠一个简单的二维和三维图形不能一次性显示出想要提供的信息,此时可以通过颜色的变化来进一步描述图形特征(提供一附加的“维数”)。Matlab提供了大量的颜色工具,可丰富图形表示,增加图形可读性。5.5.1颜色映象原理对于复杂图象,matlab提供了一种任意颜色设置的方式:颜色映象(RGB——红绿蓝)。颜色映象即将RGB这三种颜色按照不同的比例进行组合形成新的颜色,其结构为n*3的矩阵,矩阵元素值在0~1之间变化,一行值即表示一种颜色,如(100)为红色,(010)为绿色等等。常见的颜色RGB值见P177表5-4。Matlab提供了多种常见的颜色映象(一个颜色映象定义了绘制图形的调色板),如Hsv、hot、cool等,见表5-5。5.5.2颜色映象的应用基本着色技术1)变址色彩法(indexedcoloring):将每个数据点变换成色图中的某索引号,使数据点在具体的色图中获得该索引号所代表的一种颜色;然后依据这些数据点颜色,由shading模式推出其他点的用色。2)真彩法(truecoloring):每个数据点直接采用RGB指定颜色。曲面的其他点颜色,与1)同进行shading处理。接受颜色参量的绘图函数中的颜色参量常用方式:字符串,如‘r’代表红色等;三维行向量,如’color’,[010]代表绿色;矩阵:colormap(M)颜色映象的直观显示

观察颜色映象矩阵元素值:cool(x),x为颜色映象的行数Rgbplot函数:直接将映象矩阵中3列数用红绿蓝绘制出来Pcolor函数:绘制伪彩色图(使用的色彩用于表示数据的大小,而不是自然色彩)。Colorbar函数:在图形窗口中显示当前颜色条。颜色映象的建立和修改

颜色映象即为一矩阵,可采取矩阵操作方式进行任意操作。1)brigten函数:调整一个给定的颜色映象来增加或减少暗色的强度2)用户自定义颜色映象:采用m*3的矩阵可以建立自己的颜色映象3)caxis函数:用于设置伪彩色的缩放比例。5.5.3图象显示技术

在matlab中图象通常由数据矩阵和色彩矩阵组成,根据图象着色方法的不同,将图象分为:变址图象(indexedimage)、强度图象(intensityimage)、真彩或RGB(truecolororRGBimage)。图象的读写imread(filename,fmt):注意使用单引号[x,y]=imread(filename,fmt):将图象数据保存至x矩阵中,将颜色映象保存至y中;Imwrite(filename.fmt),注意使用单引号,将图象输出成指定名称格式的图片。

Eg5-23>>a=imread('people.jpg');>>size(a)ans=160012003>>a=imread('people','jpg');>>a=imread('people.jpg','jpg');>>imwrite('people.jpg',‘bmp');三种方式结果一样Eg5-23Matlab可以处理多种格式的图象:jpg、tiff、bmp、png、hdf、pcx、xwd等。2图象的显示Image(A):其中A为定义了的图象变量名或图象名称或矩阵。命令窗口输入:a=imread('people','jpg');image(a)axisimage

size(a)ans=160012003或者image(imread('people','jpg'))5.6光源位置和材质处理为使图形更逼真,可对光源和反射表面材质进行设置。建立光源Camlight:根据照相机的位置建立或定位光源Lightangle:在球坐标系中设置光源

Light:建立光源对象设置光照模式Lighting有四种模式:flat均匀洒落在每个曲面上Gouanund:PhongNone:关闭所有光源材质处理Material:四种模式ShinyDullMetaldefault5.7句柄图形句柄图形(handlegraphics)是一种面向对象的绘图系统中的概念。所有图形操作都是针对图形对象的,图形对象是图形系统中最基本、最低层的图元。一幅图的每一组成部分都是一个对象,每一个对象都有一系列句柄和它相关,可对这些句柄按需进行属性修改。每个具体对象都有自己的ID,即句柄,它是存取图形对象唯一的规范识别符号,不同对象的句柄不能重复和混淆。每个计算机根对象都只有一个,即屏幕,它的句柄数总是为0;而我们常说的图形窗口——图(figurewindow)的句柄总是正整数,用来标志图形窗口的序号。除了根对象和图形对象外,其他对象的句柄(如菜单、轴、线等)都是双精度浮点数,见图5-41。建立图形对象的函数,详见P188页5-8。可以对句柄对象进行访问以及修改,句柄实际上是每一个对象的数组标志。Eg5-24可有n个figureparentson可对这些子对象进行查看和修改在命令窗口输入exno32得到例5-9的图形,此时该图形的句柄为“1”,使用get(1)命令查看句柄属性如下:>>get(1)

Alphamap=[(1by64)doublearray]

BackingStore=on

CloseRequestFcn=closereq Color=[0.80.80.8]

Colormap=[(64by3)doublearray]

CurrentAxes=[151.001]

CurrentCharacter=

CurrentObject=[151.001]

CurrentPoint=[203200]

DockControls=on

DoubleBuffer=on

FileName=

FixedColors=[(10by3)doublearray]

IntegerHandle=on

InvertHardcopy=on

KeyPressFcn=

MenuBar=figure

MinColormap=[64] Name=

NextPlot=add

NumberTitle=on

PaperUnits=centimeters

PaperOrientation=portrait

PaperPosition=[0.6345176.3451720.304615.2284]

PaperPositionMode=manual

PaperSize=[20.98429.6774]

PaperType=A4 Pointer=arrow

PointerShapeCData=[(16by16)doublearray]

PointerShapeHotSpot=[11] Position=[849234560420] Renderer=painters

RendererMode=auto Resize=on

ResizeFcn=

SelectionType=normal

ShareColors=on

ToolBar=auto Units=pixels

WindowButtonDownFcn=

WindowButtonMotionFcn=

WindowButtonUpFcn=

WindowStyle=normal

温馨提示

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

评论

0/150

提交评论