第六章 图形处理功能.doc_第1页
第六章 图形处理功能.doc_第2页
第六章 图形处理功能.doc_第3页
第六章 图形处理功能.doc_第4页
第六章 图形处理功能.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第六章 图形处理功能Chapter 6: The function of Image processing一 二维图形(Two dimensional plotting)1. 基本绘图函数(Basic plotting function):Plot, semilogx, semilogy, loglog, polar, plotyy(1). 单矢量绘图(single vector plotting):plot(y),矢量y的元素与y元素下标之间在线性坐标下的关系曲线。例1:单矢量绘图y=0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20;plot(y)可以在图形中加标注和网格,例2:给例1 的图形加网格和标注。y=0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20;plot(y)title(简单绘图举例);xlabel(单元下标);ylabel(给定的矢量);grid(2). 双矢量绘图(Double vector plotting):如x和y是同样长度的矢量, plot(x,y)命令将绘制y元素对应于x元素的xy曲线图。例:双矢量绘图。 x=0:0.05:4*pi;y=sin(x);plot(x,y)(3). 对数坐标绘图(ploting in logarithm coordinate): x轴对数 semilogx, y轴对数semilogy, 双对数loglog,例:绘制数组y的线性坐标图和三种对数坐标图。y=0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20;subplot(2,2,1)plot(y)subplot(2,2,2)semilogx(y)subplot(2,2,3)semilogy(y)subplot(2,2,4)loglog(y) (4)极坐标绘图( Plotting in polar coordinate): polar(theta,rho) theta角度, rho半径例:建立简单的极坐标图形。t=0:.01:2*pi;polar(t,sin(2*t).*cos(2*t)2. 多重曲线绘图(Multiple curve plotting)(1)一组变量绘图(A group variable plotting)plot(x,y)(a) x为矢量,y为矩阵时plot(x,y)用不同的颜色绘制y矩阵中各行或列对应于x的曲线。例1: x=0:pi/50:2*pi;y(1,: )=sin(x);y(2,:) =0.6*sin(x);y(3, :)=0.3*sin(x);plot(x,y)(b) x为矩阵,y为矢量时绘图规则与(a)的类似,只是将x中的每一行或列对应于y进行绘图。例 2:x(1,: )= 0:pi/50:2*pi;x(2,: )=pi/4:pi/50:2*pi+pi/4;x(3,: )=pi/2:pi/50:2*pi+pi/2;y=sin(x(1,: );plot(x,y)(c) x和y是同样大小的矩阵时, plot(x,y)绘制y矩阵中各列对应于x各列的图形。例3:x(:,1 )=0:pi/50:2*pix(:,2 )=pi/4:pi/50:2*pi+pi/4x(:,3 )=pi/2:pi/50:2*pi+pi/2;y(:,1 )=sin(x(:,1 )y(:,2 )=0.6*sin(x(:,1);y(:,3 )=0.3*sin(x(:,1);plot(x,y)这里x和y的尺寸都是1013,所以画出每条都是101点组成的三条曲线。如行列转置后就会画出101条曲线,每条线由三点组成。x(1,:)=0:pi/50:2*pix(2,:)=pi/4:pi/50:2*pi+pi/4x(3,:)=pi/2:pi/50:2*pi+pi/2y(1,:)=sin(x(1,:)y(2,:)=0.6*sin(x(1,:)y(3,:)=0.3*sin(x(1,:)plot(x,y)(d) 如果y是矩阵,则plot(y)绘出y中各列相对于行号的图形,对于n行矩阵,x轴的坐标为1:n。(2)多组变量绘图( Multiple group variables plotting):对于一系列相应的矩阵yi和xi, 可以使用多组变量绘图法:plot(x1,y1,x2,y2,xn,yn),这种方法的优点是允许将不同大小的矩阵或矢量的图形绘制在一张图上。例:多组变量绘图。x=0:pi/50:2*pi;y1=sin(x);y2=0.6*sin(x);y3=0.3*sin(x);plot(x,y1,x,y2,x,y3)(3)双y轴绘图:plotyy, 在一个图形窗口绘制两组数据曲线,共用一个x轴,图形两边各有一个y轴。两条图线可以调用不同的绘图方法。例1: x=0:0.3:12;y=exp(-0.3*x).*sin(x)+0.5;plotyy(x,y,x,y,plot,stem) 左侧y轴对应plot形式的绘图,右侧y轴对应stem形式的曲线。例2: 对于y坐标不同的情况。t=0:900;A=1000;a=0.005;b=0.005;z1=A*exp(-a*t);z2=sin(b*t);plotyy(t,z1,t,z2,semilogy,plot)3. 图线形式和颜色(Style and color of plot)(1) 图线的形式: (style of plot)MATLAB提供的四种线形,实线 虚线- - , 冒号线 : ,点划线 - .标记点类型: . , + , *, o, , s (或square), d (或diamond), , , , p (或pentagram), h (或hexagram),plot(x,y,), plot(x1,y1,:,x2,y2,*) 例1:选择不同的线形绘图。 t=0:pi/100:2*pi;y=sin(t); y2=sin(t-0.25);y3=sin(t-0.5);plot(t,y,-,t,y2,-,t,y3,:)例2:选择不同的标记点绘图。 t=0:pi/20:2*pi;x=t.3;y=sin(t);plot(x,y,o)(2) 线的颜色(color of plot): MATLAB中可选的颜色: 红r,绿g, 蓝b, 黄y, 粉红m, 青c(cyan) 黑k.例:t=0:pi/20:2*pi;y=sin(t);plot(x,y,r), plot(x,y,g+)(3)图线的其他属性(other characters of plot): 可设置图线的宽度、标记点的边缘颜色、填充颜色、标记点的大小等。 例: 设置图线的线形、颜色、宽度、标记点的颜色及大小。t=0:pi/20:pi;y=sin(4*t).*sin(t)/2;plot(t,y,-bs,LineWidth,2,MarkerEdgeColor,k,. MarkerFaceColor, y,MarkerSize,10)4. 复数绘图(Complex plotting): plot用于函数绘制复数的图形时,通常虚部是被忽略的。但plot只作用于单个复变量z时,则绘出的是实部对虚部的关系图(复平面上的一组点)。即这时plot(z)等价于 plot(real(z).例: 画一个20 边的多边形(用exp函数生成),顶角用小圆圈表示。t=0:pi/10:2*pi;plot(exp(i*t),o)axis(square)如果在复平面绘制多重线 ,只能分别以实部和虚部为坐标来绘制,否则虚部将被忽略,并给出警告。二 图形的控制与表现(Figure control and representation)MATLAB提供的用于图形控制的函数和命令:axis: 人工选择坐标轴尺寸.clf: 清图形窗口.ginput: 利用鼠标的十字准线输入.hold: 保持图形.shg: 显示图形窗口.subplot: 将图形窗口分成N块子窗口。1 图形窗口(figure window)(1). 图形窗口的创建和选择(Creating and selecting of figure window)figure(n)函数用于为当前的绘图创建图形窗口,每运行一次figure就会创建一个新的图形窗口,n表示第个n窗口,如果窗口定义了句柄,也可以用figure(h)将句柄h的窗口作为当前窗口。clf 命令用于清除当前图形窗口中的内容。shg命令用于显示当前图形窗口。(2). 在一个图形窗口中绘制多个子图形(Drawing several subfigures in a single window)subplot(m,n,p), 把窗口分成mn个小窗口,并把第p个窗口当作当前窗口。例:将4 个图形显示在同一个图形窗口中。t=0:pi/20:2*pi;x,y=meshgrid(t);subplot(2,2,1)plot(sin(t),cos(t),axis equalsubplot(2,2,2)z=sin(x)+cos(y);plot(t,z),axis(0 2*pi 2 2)subplot(2,2,3)z=sin(x).*cos(y);plot(t,z),axis(0 2*pi 1 1)subplot(2,2,4)z=sin(x).2-cos(y).2;plot(t,z),axis(0 2*pi 1 1)(3). 在一个已有的图形上绘图(Drawing a figure on the figure was existed): 用hold on命令在一个已有的图形上继续绘图,使用hold off命令结束继续绘图。例:将peaks函数的等高线图与伪彩色画在一起。x,y,z=peaks; %产生双变量数组contour(x,y,z,20,k) %绘制等高线hold onpcolor(x,y,z) %绘制伪彩色图shading interp %表面色彩渲染hold off2 坐标轴控制命令(Axis control commands) 控制坐标性质的axis函数的多种调用格式:axis(xmin xmax ymin ymax):指定二维图形x和y轴的刻度范围,axis auto 设置坐标轴为自动刻度(缺省值)axis manual(或axis(axis)) 保持刻度不随数据的大小而变化axis tlght 以数据的大小为坐标轴的范围axis ij 设置坐标轴的原点在左上角,i为纵坐标,j为横坐标axis xy 使坐标轴回到直角坐标系axis equal 使坐标轴刻度增量相同axis square 使各坐标轴长度相同,但刻度增量未必相同axis normal 自动调节轴与数据的外表比例,使其他设置失效axis off 使坐标轴消隐axis on 显现坐标轴(1) 坐标轴的范围(Domain of coordinates axis):二维图形坐标轴范围在缺省状态下是根据数据的大小自动设置的,如欲改变,可利用axis(xmin xmax ymin ymax),函数来定义。例: 定义坐标轴范围对观察图形的影响。x=0:.01:pi/2;figure(1)plot(x,tan(x),-ro) %ymax=tan(1.57),而其他数据都很小,结果将%使图形难于进行观察和判断。figure(2)plot(x,tan(x),-ro)axis(0, pi/2,0,5) %对坐标轴的范围进行控制就可得到较满意的绘图结果(2)显示比例对绘图结果的影响(Effect of display scaling on plotting results)例:比较(Default, axis square, axis equal, axis tight)几种不同的显示方式的显示效果。 t=0:pi/20:2*pi; figure(1) subplot(2,1,1)plot(sin(t),2*cos(t) %缺省状态下的图形比例grid on subplot(2,1,2)plot(sin(t),2*cos(t)axis square %正方形的显示比例grid onfigure(2)subplot(1,2,1)plot(sin(t),2*cos(t) axis equal %具有相等的刻度比例grid onsubplot(1,2,2)plot(sin(t),2*cos(t)axis tight %紧缩形式grid on3 图形标注(Marking on the figure):MATLAB的图形标注方法(表 67)title 标题, xlabel x轴标注, ylabel y轴标注,text 任意定位的标注 gtext 鼠标定位标注,legent 标注图例图形标注可以使用字母,数字,汉字或按规定的方法表示希腊字母,如pi表示,leq表示,rm表示后面的字恢复为正体字,it表示斜体字,FontSize表示字体的大小, FontName表示字体的类型等。 可以使用图形窗口的 Insert菜单,也可以使用属性编辑器,还可以使用函数输入的方法加标注,以下介绍相关函数的使用方法。(1). 加注坐标轴标识和图形标题(Add axis labels and title of figure) 加注坐标轴标识:xlabel(s), ylabel(s)图形标题: title(s)例:加注坐标轴标示和图形标题。t=0:pi/100:2*pi;y=sin(t);plot(t,y)axis(0 2*pi,-1 1)xlabel(0 leq itt rm leq pi,FontSize,16)ylabel(sin(t),FontSize,20)title(正弦函数图形,FontName,隶书,FontSize,20)(2). 图中加注文本(Add text in the figure)text(x,y,字符串)例:在上图中加语句。t=0:pi/100:2*pi;y=sin(t);plot(t,y)axis(0 2*pi,-1 1) xlabel(0 leq itt rm leq pi,FontSize,16)ylabel(sin(t),FontSize,20)title(正弦函数图形,FontName,隶书,FontSize,20)text(3*pi/4,sin(3*pi/4),leftarrowsin(t)=0.707, FontSize,16)text(pi,sin(pi),leftarrowsin(t)=0, FontSize,16)text(5*pi/4,sin(5*pi/4),sin(t)=-0.707rightarrow,FontSize,16, .HorizontalAlignment,right)句中:leftarrow 表示加一个向左的箭头rightarrow表示加一个向右的箭头HorizontalAlignment 表示右对齐水平排列gtext函数用于在图形窗口上用鼠标直接在指定的位置上加注文本,调用格式:gtext(字符串)例:t=0:pi/100:2*pi;y=sin(t);plot(t,y)axis(0 2*pi,-1 1)xlabel(0 leq itt rm leq pi,FontSize,16)ylabel(sin(t),FontSize,20)title(正弦函数图形,FontName,隶书,FontSize,20)gtext(MATLAB) (3). 指定TeX字符例:在标题中指定TeX字符 t=0:pi/100:2*pi;alpha=-0.8;beta=15;y=sin(beta*t).*exp(alpha*t);plot(t,y)title(itAe-italphaittsinitbetaittitalphaitbeta)xlabel(时间mus.),ylabel(幅值)在title中的字符串表现的是 Aet sint itAe-italphaitt sinitbetaittitalphaitbeta斜体Ae 上标斜体t 斜体t 斜体 斜体4.在图形中添加图例框(Add legend in the figure)legend(字符串1, 字符串2,)例:在当前图形中添加图例说明。x=0:pi/10:2*pi;y1=sin(x);y2=0.6*sin(x);y3=0.3*sin(x);plot(x,y1,x,y2,-o,x,y3,-*)legend( 曲线1,曲线2,曲线3)legend(boxoff)legend函数的其他功能见(表 68)三 特殊图形(Special figure)1 条形图(Bar figure): bar(y), bar(x,y), barh, bar3(y), bar3(x,y), bar3h(x,y)(1) 二维条形图 :bar(y), bar(x,y), barh,(a).如果y是矢量,bar(y) 绘制最简单的条形图, 每一个条形图的位置由y元素的下标决定,高度由y元素的大小决定。例1: a=1 3 5;4 3 7;2 8 4bar(a)(b) 当y是mn阶的矩阵时,bar(y) 绘制的条形图以分组或叠加的形式表现。矩阵中每一行元素绘制在一组中,每一列元素绘制在每组中相对应的位置上(各组中同样颜色的条形表示同一列数据)。例2:y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar(y)例3:绘制分组形式的水平条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;barh(y)例4:绘制叠加形式的条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar(y,stack)例5:绘制叠加形式的水平条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;barh(y,stack) (b) 使用bar(x,y)绘制指定x坐标的条形图,其中x必须是矢量,用于确定各组条形图的位置。例1:指定x坐标的二维条形图,x=1 2 4 7 10y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar(x,y)例2:指定x坐标的水平二维条形图,x=1 2 4 7 10y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;barh(x,y)例3:绘制指定x坐标的叠加形式的二维条形图。x=1 2 4 7 10 y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar (x,y,stack)如果y也是矢量,对应每一个x坐标有一个条形,条形的高度表示了矢量y元素的大小。例4:x=0:pi/10:2*pi;y=sin(x);bar(x,y)(2). 三维条形图:bar3(y),将mn阶的矩阵绘制成分布在三维空间中的柱体,有分组形式和分列形式两种。例1:分组形式的三维条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar3 (y,group)例2:分列形式的三维条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar3 (y)(3)条形图中的图形叠加:通过在相同的位置创建一个与原来条形图中的坐标轴相对独立的新的坐标轴实现条形图的叠加。例: 有两组实验数据,一组表示物质成分(TCE),一组表示温度(temp),数据是在35天中每隔5天的采样,将物质成分和温度与时间的关系画在一张图中。TCE=515 420 370 250 135 120 60 20; %实验数据temp=29 23 27 25 20 23 23 27;days=0:5:35; %采样天数bar(days,temp,c) %温度与时间的条形图xlabel(Day)ylabel(Temperature (oC)h1=gca; %获取当前轴对象句柄h2=axes(position,get(h1,position); %建立新的与h1位置相同的对象句柄plot(days,TCE,LineWidth,3) %在以为句柄的坐标对象上绘制物质成分与时间的关系曲线set(h2,YaxisLocation,right,color,none,Xticklabel,) %设置句柄为h2的坐标轴对象的y轴为右侧。set(h2,Xlim,get(h1,Xlim),Layer,top) %设置句柄为h2的坐标轴对象的x轴的范围与句柄为h1 的%坐标轴对象轴的范围相同。text(11,380,Concentration,Rotation,-55,FontSize,16) % 在坐标为 11,380 的位置以旋转-55%的方向书写concentrationylabel(TCE Concentration (PPM)title(Bioremediation,FontSize,16)饼图(pie): 用于表示矢量或矩阵中各元素所占有的比例。, 函数pie和pie3提供平面饼图和三维饼图的绘图功能。 *pie(x) 使用x中的数据绘制饼图,x中的每一个元素用饼图中的一个扇区表示。*pie(x,explode) 将一些扇区从饼图中分离出来,explode为一个与 x尺寸相同的矩阵,其非零元素所对应的x矩阵中的元素从饼图中分离出来。(1) 不分离饼图: pie(x)例1:不分离饼图:x=5.5 74.7 44.5 33.2 46.6;pie(x)(2) 带分离切块的饼图:在矢量x的后面加一个与x相同长度的矢量,该矢量中所有不为0的元素所对应的矢量x中的切块将被分离出来。例2:x=5.5 74.7 44.5 33.2 46.6;pie(x,0 0 0 0 1) %分离第5块(3) 不完整的饼图:当x的全部元素之和小于1时绘制的是不完整饼图。例3:x=0.2 0.3 0.4;pie(x)(4) 三维饼图:有一定厚度的饼图, 由函数pie3实现,调用方法与二维饼图相同。例:带分离切块的三维饼图。pie3(1 2 3 4 5,0 1 0 1 0) 3. 其他图形(Other figures): MATLAB有20多种特殊图形的绘制方法,下述为常用方法。(1)直方图(hist): 一种统计运算的结果,它的横轴是数据的幅度,纵轴是对应于各个幅度数据出现的次数,直方图没有负数。例 1:直角坐标系下矢量的直方图。 yn=randn(10000,1);figure(1)hist(yn) %缺省状态下画10个条形figure(2)hist(yn,20) %可以设置n个条形个数例2:直角坐标系下的三维数组的直方图。y=randn(10000,3);figure(1)hist(y) %缺省状态下画10个条形figure(2)hist(y,20) %hist(y,n)可以设置条形个数为n(2) 用杆状图表现离散数据例1:二维杆状图。 x=0:0.2:10;y=exp(-0.3*x).*sin(x);figure(1)stem(x,y)figure(2)stem(x,y,:sr) %可用字符串改变线形、标记点形状和颜色例2: 用三维杆状图表现复平面快速傅立叶变换计算。th=(0:127)/128*2*pi;x=cos(th);y=sin(th);f=abs(fft(ones(10,1),128);stem3(x,y,f,d,fill)xlabel(实部)ylabel(虚部)zlabel(幅值)title(频率响应幅值)例2:用三维杆状图与其他图形的叠加表现拉普拉斯变换基函数。t=0:0.1:10;s=0.1+i;y=exp(-s*t); %计算延迟指数stem3(real(y),imag(y),t,m)hold onhline=(plot3(real(y),imag(y),t,k) %返回三维曲线图的句柄hold offset(hline,LineWidth,3) %设置线宽xlabel(实部)ylabel(虚部)zlabel(幅值)(3) 阶梯图阶梯图的表现方法:调用函数stairs(x,y),每一阶梯的起始点为矢量y的数据点。(STAIRS(X,Y) draws a stairstep graph of the elements in vector Y at the locations specified in X. The X-values must be in ascending order and evenly spaced.)例:绘制函数阶梯图。alpha=0.01;beta=0.5;t=0:10; f=exp(-alpha*t).*sin(beta*t);stairs(t,f)hold onplot(t,f,:*) %绘制虚线图以说明阶梯图阶梯起始点的位置hold offlabel=函数e-(alpha*t) sinbeta*t的阶梯图;text(0.5,-0.2,label,FontSize,14)xlabel(t=0:10,FontSize,14)axis(0 10 -1.2 1.2) (4) 彩色分散点图(Color scatter figure)彩色分散点图函数:scatter(x,y,c,s) x, y为两个矢量,用于定位数据点,s为绘图点的大小,c为绘图所使用的色彩,s和c均可以以矢量或表达式形式给出,s和c为与x或y同长度的矢量时标记点尺寸和颜色将按线性规律变化。在 scatter函数的前4各参数之后还可以增加第五个参数 filled,表示填充绘图点。Scatter与plot 的最大差别在于Scatter可以绘制变尺寸、变颜色的点图。例:给定数据t=0:pi/10:2*pi, y=sin(t),观察在不同输入参数时函数的绘图结果。t=0:pi/10:2*pi;y=sin(t)subplot(3,2,1)scatter(t,y)subplot(3,2,2)scatter(t,y,v)subplot(3,2,3)scatter(t,y,(abs(y)+2).4,filled)subplot(3,2,4)scatter(t,y,30,0:2: 40,v,filled)subplot(3,2,5)scatter(t,y,(t+1).3,y,filled)四 三维图形(3-D figure)MATLAB提供了大量三维图形的表现函数,可用于绘制三维曲线图、网格图、表面图、伪彩图和等高线图等,还提供了控制颜色、光线、视角等绘图效果的函数和命令。1 三维曲线图(3-D plotting)plot3(x,y,z)当x,y,z是同样长度的矢量时,绘出的是一条在三维空间贯穿的曲线。例1:当x, y, z都是一维数组时的三维曲线图。 t=0:pi/50:10*pi; x=exp(-t/15).*sin(2*t);y=exp(-t/15).*cos(2*t)z=t;plot3(x,y,z)axis square; grid on如x,y,z都是mn阶的矩阵时,绘出的是m条分布在三维空间的曲线。例2:当x, y, z都是矩阵时的三维曲线图。x,y=meshgrid(-2:0.1:2);z=x.*exp(-x.2-y.2);plot3(x,y,z)grid on例3:规定线形、颜色及标记点的三维曲线图。t=0:pi/20:5*pi;plot3(sin(t),cos(t),t,:*r)2 三维绘图数据的产生(Creating the data of 3-D figure)(1)peaks用于创建双峰函数和绘图。基本调用格式为:* x,y,z=peaks(n): 分别创建x,y,z三个均为nn阶的方阵,其中x的每一列元素都相同,每一行元素均为在-3,3区间内的n等份,y的行列元素与x刚好相反,z为x和y的函数, z=l Peaks(n) l 直接用peaks函数创建的x,y,z三个矩阵绘制表面图,相当于执行了x,y,z=peaks(n)和surf(x,y,z)两个函数。例1:a=peaks(8);mesh(a)(2)meshgrid 按指定方式生成网格矩阵,调用格式为:X,Y,Z=meshgrid(x,y,z) 分别创建X,Y,Z三个mnk阶的矩阵,矩阵的阶数由x,y,z三个矢量的长度m,n,k确定,X,Y,Z三个矩阵表示了三维空间的网格,如省略了Z,则创建二维网格。 x,y,z=meshgrid( 2,3, 6);plot3(x,y,z)grid on3 网格图(Meshing)*mesh(z) 绘制分别以 mn阶矩阵z的行数和列数为x和y坐标(1:m,1:n),以z的对应元素值为z坐标的三维网格图。*mesh(x,y,z) 绘制分别以矩阵x,y,z的元素值为坐标的三维网格图,x,y,z必须为同阶矩阵。*函数Meshc: 将网格图与等高线一起绘制。*函数Meshz: 在绘制的同时绘制零基准平面。例 1:绘制各种网格图subplot(2,2,1)mesh(peaks(20) %基本网格图subplot(2,2,2)meshc(peaks(20) %带等高线的网格图subplot(2,2,3)p=peaks(30); p(20:23,9:15)=NaN*ones(4,7); %剪孔位置(将部分网格设置为非数)meshz(p) %带剪孔的垂帘网格图(带有零基准平面)subplot(2,2,4)Waterfall(peaks(30) %瀑布水线图4 着色表面图(Surfing) (1)绘制表面着色图surf, 绘制表面着色图的基本命令;surfc, 绘制带等高线的着色表面图;surfl 可以控制表面图的光照效应。函数surf的调用格式:l surf(z) 绘制分别以 mn阶矩阵z的行数和列数为x和y坐标(1:m,1:n),以z的对应元素值为z坐标的三维表面图。l surf(x,y,z) 绘制分别以矩阵x,y,z的元素值为坐标的三维表面图,x,y,z 必须为同阶矩阵。(1:m,1:n),以z的对应元素值为z l surf(x,y,z,c) 用C定义的颜色绘制三维表面图。l surf(,PropertyName,PropertyValue) 定义三维表面属性图。l surfc() 绘制带等高线的三维表面图。l h=surf()和 h=surfc() 返回表面图的图形对象句柄。例1:用surf函数画一个椭圆表面。(a)生成数据并绘制表面图x=-1.5:0.3:1.5;y=-1:0.2:1;x,y=meshgrid(x,y); %将矢量x,y转为数组X,Y,用于绘三维表面图z=sqrt(4-x.2/9-y.2/4);surf(x,y,z)MESHGRID X and Y arrays for 3-D plots. X,Y = MESHGRID(x,y) transforms the domain specified by vectors x and y into arrays X and Y that can be used for the evaluation of functions of two variables and 3-D surface plots. The rows of the output array X are copies of the vector x and the columns of the output array Y are copies of the vector y.(2) 用surfl函数绘制带光照效果的表面图surfl(x,y,z)colormap(hot)(3)调用表面色彩渲染函数shading ,控制表面颜色连续变化。surfl(x,y,z)colormap(hot)shading interp shading 函数有三个可选择参数flat, faceted, interp例:不同shading 函数参数设置的效果对照figure(1)surf(peaks(20)shading flat %网格的每个线段和表面都有相同的颜色figure(2)surf(peaks(20)shading faceted %在flat的基础上加黑色网格figure(3)surf(peaks(20)shading interp %网格的每个线段和表面上的颜色都是变化的例:产生一个旋转柱面体。 t=0:pi/12:3*pi;r=abs(exp(-0.25*t).*sin(t);x,y,z=cylinder(r,30);surfl(x,y,z)colormap(prism) %按照预定的色彩索引映射色图shading interp5. 表面图形的透明处理hidden off: 是个开关型命令,可以看到被遮挡的网格线条,时图形透明例:有无透明处理的效果对比。 x,y=meshgrid(-8:.5:8);R=sqrt(x.2+y.2)+eps;Z=sin(R)./R;figure(1) %hidden on (缺省,无透明处理)mesh(Z)colormap(0,1,0)x,y=meshgrid(-8:.5:8);R=sqrt(x.2+y.2)+eps;Z=sin(R)./R;figure(2) %hidden off (做透明处理)mesh(Z)colormap(0,0.2,0.5)hidden off6. 表面图形的颜色映射colormap: colormap函数用于按照预定的色彩索引映射色图:colormap( RGB颜色矢量函数 )或colormap(MAP),(RGB颜色表(表610),用于网格图mesh;色彩映射表:(表 611)用于表面图surf。(RGB颜色表 610) (色彩映射表 表611)7. 切片图(Slice figure)slice(X,Y,Z,v,xi,yi,zi): 四维可视化函数,X,Y,Z为使用meshgrid函数生成的三维网格坐标矩阵,xi,yi,zi 为切片位置。slice用于实现三元函数(v=f(x,y,z)图形函数)的可视化表现,绘制三维物体切片图。例: 函数的四维表现。x=-2:0.1:2; y=-2:0.25:2;z=-2:0.25:2;X,Y,Z=meshgrid(x,y,z); %形成X,Y,Z三维网格坐标矩阵v=X.*exp(-X.2-Y.2-Z.2); %所绘制的图形的函数xi=-0.7,0.7; %切片位置yi=-0.4,1.9;zi=-0.5;slice(X,Y,Z,v,xi,yi,zi) %形成三维切片图 xlabel(x);ylabel(y);zlabel(z);colorbar(horiz) %创建水平色条,也可用colorbar(vert)创建垂直色条view(-30,45)五 图形处理的高级技术(Advanced technology of image processing)1 视图(View)控制视图和旋转的函数:view, viewmtx, rotate, rotate3d(1)视图方向:view(az,el) az (azimuth)-方位角,绕z轴旋转,逆时针为正, el (elevation) -仰角, 从xy平面向z轴旋转的角度,朝向z轴的旋转为正。缺省状态二维图形: az=0o, el=90o, 三维图形: az=-37.5o,el=30o view(vx,vy,vz) 返回视点的直角坐标例: 比较不同视图的视觉效果。subplot(2,2,1)peaks(50)subplot(2,2,2)peaks(50)view(90,0)subplot(2,2,3)peaks(50)view(30,45) subplot(2,2,4)peaks(50)view(2) %二维平面图(2) 图形旋转: rotate3d 三维视图变化命令,可以用鼠标控制视图的变化。例:peaks(50)rotate3d2 光照(1) 创建光源 *light(color,option1,style,option2,position,option3)不使用此函数时,图形采用各处相等的漫射光,采用后产生确定属性的光源,缺省设置为无穷远处的白色光源穿过1,0,1射向坐标原点。 (2) 光照模式 light options: flat: 入射光均匀照射在图形对象的每个小面上,为缺省选项。gouraud: 先对顶点颜色插值,再对由顶点勾画的面插值,选项用于曲面的表现。phong: 对顶点处法线插值,再计算各像素点的反光,效果好,但占机时多。(3) 材料反射系数 material material options:shiny: 有光泽、明亮,镜反射份额较大。dull: 暗淡、柔和,漫反射份额大,无镜面亮点。metal: 有金属光泽,镜反射份额大,背景光

温馨提示

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

评论

0/150

提交评论