matlab绘图与图像处理(三维图形)

7.2  三维图形

7.2.1  三维曲线、面填色命令

命令 comet3

功能  三维空间中的彗星图。彗星图为一个三维的动画图像,彗星头(一个小圆圈)沿着数据指定的轨道前进,彗星体为跟在彗星头后面的一段痕迹,彗星轨道为整个函数所画的实曲线。注意一点的是,该彗星轨迹的显示模式EraseMode为none,所以用户不能打印出彗星轨迹(只能得到一个小圆圈),且若用户调整窗口大小,则彗星会消失。

用法  comet3(z) 用向量z中的数据显示一个三维彗星

      comet3(x,y,z) 显示一个彗星通过数据xyz确定的三维曲线。

      comet3(x,y,z,p) 指定彗星体的长度为:p*lengthy)。

7-24

>>t = -20*pi:pi/50:20*pi;

>>comet3((cos(2*t).^2).*sin(t),(sin(2*t).^2).*cos(t),t);

图形的结果为图7-24

 

 

 

命令 fill3

功能  用指定的颜色填充三维多边形。阴影类型为平面型和Gouraud型。

用法  fill3(X,Y,Z,C) 填充由参数xyz确定多边形。若xyz为矩阵,fill3生成n个多边形,其中n为矩阵的列数。在必要的时候,fill3会自动连接最后一个节点和第一个节点。以便能形成封闭的多边形。参数c指定颜色,这儿c为引用当前色图的下标向量或矩阵。若c为行向量,则c的维数必须等于x的列数和y的列数,若c为列向量,则c的维数必须等于矩阵x的行数和的行数。

      fill3(X,Y,Z,ColorSpec) 用指定的颜色ColorSpec填充由xyz确定的多边形。

      fill3(X1,Y1,Z1,C1,X2,Y2,Z2,C2,对多边形的不同区域用不同的颜色进行填充。

      fill3(,'PropertyName',PropertyValue) 允许用户对特定的patch属性进行设置。

      h = fill3(返回patch图形对象的句柄向量,每一块(patch)对应一个句柄。

运算规则:

1.若X,YZ为同型的矩阵,fill3生成XY,Z中相同位置的元素确定的顶点,每一列生成一个多边形。

2.若只有XY或Z为矩阵,则fill3由列向量参数生成可用的同型矩阵。

3.若用户对填充的颜色指定为ColorSpec,则fill3生成阴影类型为flat-shaded的多边形,且设置块(patch)的属性FaceColor为RGB颜色形式的矩阵。

4.若用户用矩阵C指定颜色,命令fill3通过坐标轴属性Clim来调整C中的元素,在引用当前色图之前,用于指定颜色坐标轴的参数比例。

5.若参数C为一行向量,命令fill3生成带平面阴影(flat-shaded)的多边形,同时设置补片对象的面颜色(FaceColor)属性为flat。向量c中的每一元素成为每一补片对象的颜色数据(CData)属性的值。

6.若参数C为一矩阵,命令fill3生成带内插颜色的多边形,同时设置多边形补片对象的FaceColor属性为interp。命令fill3采用对多边形顶点色图的下标指定的颜色采用线性内插算法,同时多边形的颜色采用对顶点颜色用内插算法得到的颜色。矩阵C的每一列元素变成对应补片对象的Cdata属性值。

7.若参数C为一列向量,命令fill3先复制C的元素,使之成为所需维数的矩阵,再按上面的方法6进行计算。

7-25

>>X = 10*rand(4);Y=10*rand(4);Z=10*rand(4);

>>C = rand(4);

>>fill3(X,Y,Z,C)

图形结果可能为图7-25

 

 

 

7.2.2  三维图形等高线

命令1  contour

功能  曲面的等高线图

用法  contour(z)  把矩阵z中的值作为一个二维函数的值,等高曲线是一个平面的曲线,平面的高度vMatlab自动取的;

      contour(x,y,z)  (x,y)是平面z=0上点的坐标矩阵,z为相应点的高度值矩阵。效果同上;

      contour(z,n)  画出n条等高线;

      contour(x,y,z,n)  画出n条等高线;

      contour(z,v)  在指定的高度v上画出等高线;

      contour(x,y,z,v)  同上;

      [c,h] = contour(…)  返回如同contourc命令描述的等高矩阵c和线句柄或块句柄列向量h,这些可作为clabel命令的输入参量,每条线对应一个句柄,句柄中的userdata属性包含每条等高线的高度值;

      contour(…,’linespec’)  因为等高线是以当前的色图中的颜色画的,且是作为块对象处理的,即等高线是一般的线条,我们可象画普通线条一样,可以指定等高线的颜色或者线形。

7-26

    >>contour(peaks(40))

图形结果为图7-26

 

 

 

命令2  clabel

功能  在二维等高线图中添加高度标签。在下列形式中,若有h出现,则会对标签进行恰当的旋转,否则标签会竖直放置,且在恰当的位置显示个一个“+”号。

用法  clabel(C,h) 把标签旋转到恰当的角度,再插入到等高线中。只有等高线之间有足够的空间时才加入,当然这决定于等高线的尺度。

      clabel(C,h,v) 在指定的高度v上显示标签h,当然要对标签做恰当的处理。

      clabel(C,h,'manual') 手动设置标签。用户用鼠标左键或空格键在最接近指定的位置上放置标签,用键盘上的回车键结束该操作。当然会对标签做恰当的处理。

      clabel(C) 在从命令contour生成的等高线结构c的位置上添加标签。此时标签的放置的位置是随机的。

      clabel(C,v) 在给定的位置v上显示标签

      clabel(C,'manual') 允许用户通过鼠标来给等高线贴标签

7-27

>>[x,y] = meshgrid(-2:.2:2); 

>>z = x.*y.*exp(-x.^2-y.^2);

>>[C,h] = contour(x,y,z);

>>clabel(C,h);

图形结果为图7-27

 

 

 

命令 contourc

功能  低级等高线图形计算命令。该命令计算等高线矩阵c,该矩阵可用于命令contourcontour3contourf等。矩阵z中的数值确定平面上的等高线高度值,等高线的计算结果用由矩阵z维数决定的间隔的宽度。

用法  C = contourc(Z) 从矩阵z中计算等高矩阵,其中z的维数至少为2*2阶,等高线为矩阵z中数值相等的单元。等高线的数目和相应的高度值是自动选择的。

     C = contourc(Z,n) 在矩阵z中计算出n个高度的等高线。

     C = contourc(Z,v) 在矩阵z中计算出给定高度向量v上计算等高线,当然向量v的维数决定了等高线的数目。若只要计算一条高度为a的等高线,输入:contourc(Z,[a,a]);

     C = contourc(x,y,Z) 在矩阵z中,参量xy确定的坐标轴范围内计算等高线;

     C = contourc(x,y,Z,n) 从矩阵Z中,参量xy确定的坐标范围内画出n条等高线;

     C = contourc(x,y,Z,v) 从矩阵Z中,参量xy确定的坐标范围内,画在v指定的高度上指定的等高线。

命令4  contour3

功能  三维空间等高线图。该命令生成一个定义在矩形格栅上曲面的三维等高线图。

用法  contour3(Z) 画出三维空间角度观看矩阵z的等高线图,其中z的元素被认为是距离xy平面的高度,矩阵z至少为2*2阶的。等高线的条数与高度是自动选择的。若[mn]=sizez),则x轴的范围为[1n]y轴的范围为[1m]

      contour3(Z,n) 画出由矩阵z确定的n条等高线的三维图。

      contour3(Z,v) 在参量v指定的高度上画出三维等高线,当然等高线条数与向量的维数相同;若想只画一条高度为h的等高线,输入:contour3(Z,[h,h])

      contour3(X,Y,Z)contour3(X,Y,Z,n)contour3(X,Y,Z,v) X与Y定义x-轴与y-轴的范围。若X为矩阵,则X(1,:)定义x-轴的范围;若Y为矩阵,则Y(:,1)定义y-轴的范围;若X与Y同时为矩阵,则它们必须同型。不论为哪种使用形式,所起的作用与命令surf相同。若X或Y有不规则的间距,contour3还是使用规则的间距计算等高线,然后将数据转变给X或Y。

      contour3(,LineSpec) 用参量LineSpec指定的线型与颜色画等高线。

      [C,h] = contour3(画出图形,同时返回与命令contourc中相同的等高线矩阵C,包含所有图形对象的句柄向量h;除非没有指定LineSpec参数,contour3将生成patch图形对象,且当前的colormap属性与caxis属性将控制颜色的显示。不论使用何种形式,该命令都生成line图形对象。

7-28

>>[X,Y] = meshgrid([-2:.25:2]);

>>Z = X.*exp(-X.^2-Y.^2);

>>contour3(X,Y,Z,30)

图形结果为图7-28

 

 

 

命令 contourf

功能  填充二维等高线图。即先画出不同等高线,然后相邻的等高线之间用同一颜色进行填充。填充用的颜色决定于当前的色图颜色。

用法  contourf(Z) 矩阵z的等高线图,其中z理解成距平面的高度。Z至少为2*2阶的。等高线的条数与高度是自动选择的。

      contourf(Z,n) 画出矩阵zn条高度不同的等高线。

      contourf(Z,v) 画出矩阵z的、由v指定的高度的等高线图。

      contourf(X,Y,Z)contourf(X,Y,Z,n)contourf(X,Y,Z,v) 画出矩阵z的等高线图,其中X与Y用于指定x-轴与y-轴的范围。若X与Y为矩阵,则必须与Z同型。若X或Y有不规则的间距,contour3还是使用规则的间距计算等高线,然后将数据转变给X或Y。

      [C,h,CF] = contourf()画出图形,同时返回与命令contourc中相同的等高线矩阵C,C也可被命令clabel使用;返回包含patch图形对象的句柄向量h;返回一用于填充用的矩阵CF。

7-29

>>contourf(peaks(30),20);

>>colormap gray

图形结果为图7-29

 

 

 

命令6  pie3

功能  三维饼形图

用法  pie3(X) x中的数据画一个三维饼形图。X中的每一个元素代表三维饼形图中的一部分。

      pie3(X,explode) x中的某一部分可以从三维饼形图中分离出来。explode是一个与x同型的向量或矩阵,explode中非零的元素对应x中从饼形图中分离出来的分量。

      h = pie3(返回一个分量为patchsurfacetext图形句柄对象的向量。即每一块对应一个句柄。

注意:命令pie3x的每一个元素在所有元素的总和中所占的比例表达出来。若x中的分量和小于1(则所有元素小于1),则认为x中的值指明三维饼形图的每一部分的大小。

7-30

    >>x = [1 3 0.5 2.5 2]

    >>ex = [0 1 0 0 0]

    >>pie3(x,ex)

图形结果为图7-30

 

 

 

7.2.3  曲面与网格图命令

命令1  mesh

功能  生成由X,Y和Z指定的网线面,由C指定的颜色的三维网格图。网格图是作为视点由view3)设定的surface图形对象。曲面的颜色与背景颜色相同(当要动画显示不透明曲面时,这时可用命令hidden控制),或者当画一个标准的可透视的网线图时,曲面的颜色就没有(命令shading控制渲染模式)。当前的色图决定线的颜色。

用法  mesh(X,Y,Z) 画出颜色由c指定的三维网格图,所以和曲面的高度相匹配,

1.若X与Y均为向量,lengthX)=nlengthY=m,而[mn]=sizeZ),空间中的点 (X(j),Y(I),Z(I,j)) 为所画曲面网线的交点,分别地,X对应于z的列,Y对应于z的行。

2.若XY均为矩阵,则空间中的点 (X(I,j),Y(I,j),Z(I,j))为所画曲面的网线的交点。

      mesh(Z) [nm] = sizeZ)得,X =1nY=1m,其中z为定义在矩形划分区域上的单值函数。

mesh(,C) 用由矩阵c指定的颜色画网线网格图。Matlab对矩阵c中的数据进行线性处理,以便从当前色图中获得有用的颜色。

mesh(,PropertyName’,PropertyValue, 对指定的属性PropertyName设置属性值PropertyValue,可以在同一语句中对多个属性进行设置。

h = mesh(返回surface图形对象句柄。

运算规则:

1.数据XYz的范围,或者是对当前轴的XLimMode,YLimMode和ZLimMode属性的设置决定坐标轴的范围。命令aXis可对这些属性进行设置。

2.参量c的范围,或者是对当前轴的Clim和ClimMode属性的设置(可用命令caxis进行设置),决定颜色的刻度化程度。刻度化颜色值作为引用当前色图的下标。

3.网格图显示命令生成由于把z的数据值用当前色图表现出来的颜色值。Matlab会自动用最大值与最小值计算颜色的范围(可用命令caxis auto进行设置),最小值用色图中的第一个颜色表现,最大值用色图中的最后一个颜色表现。Matlab会对数据的中间值执行一个线性变换,使数据能在当前的范围内显示出来。

7-31

>>[X,Y] = meshgrid(-3:.125:3);

>>Z = peaks(X,Y);

>>mesh(X,Y,Z);

图形结果为图7-31

 

 

命令 surf

功能  在矩形区域内显示三维带阴影曲面图。

用法  surf(Z) 生成一个由矩阵z确定的三维带阴影的曲面图,其中 [mn] = sizeZ),而X = 1nY = 1m。高度z为定义在一个几何矩形区域内的单值函数,z同时指定曲面高度数据的颜色,所以颜色对于曲面高度是恰当的。

      surf(X,Y,Z) 数据z同时为曲面高度,也是颜色数据。XY为定义X坐标轴和Y坐标轴的曲面数据。若XY均为向量,lengthX=nlengthY=m,而[m,n]=sizeZ),在这种情况下,空间曲面上的节点为(X(I),Y(j),Z(I,j))。

      surf(X,Y,Z,C) 用指定的颜色c画出三维网格图。Matlab会自动对矩阵c中的数据进行线性变换,以获得当前色图中可用的颜色。

      surf(,’PropertyName’,PropertyValue) 对指定的属性PropertyName设置为属性值PropertyValue

      h = surf() 返回一个surface图形对象句柄给变量h

运算规则:

1.严格地讲,一个参数曲面是由两个独立的变量I、j来定义的,它们在一个矩形区域上连续变化。例如,a<=I<=b,c<=j<=d,三个变量XYZ确定了曲面。曲面颜色由第四参数矩阵C确定。

2.矩形定义域上的点有如下关系:

                           A(I-1,j)

                              |

                  B(I,j-1) ---- C(I,j) ---- D(I,j+1)

                              |

                           E(I+1,j)

这个矩形坐标方格对应于曲面上的有四条边的块,在空间的点的坐标为[X(J,Y(J,Z),每个矩形内部的点根据矩形的下标和相邻的四个点连接;曲面上的点只有相邻的三个点,曲面上四个角上的点只有两个相邻点,上面这些定义了一个四边形的网格图。

3.曲面颜色可以有两种方法来指定:指定每个节点的颜色或者是每一块的中心点颜色。在这种一般的设置中,曲面不一定为变量XY的单值函数,进一步而言,有四边的曲面块不一定为平面的,而可以用极坐标,柱面坐标和球面坐标定义曲面。

4.命令shading设置阴影模式。若模式为interpC必须与XYZ同型;它指定了每个节点的颜色,曲面块内的颜色由附近几个点的颜色用双线性函数计算出来的。若模式为facted(缺省模式)或flatc(I,j)指定曲面块中的颜色:

                   A(I,j)----------- B (I,j+1)

                     |    C(I,j)     |

                  C(I+1,j) --------- D(I+1,j)

在这种情形下,C可以与XY,和Z同型,且它的最后一行和最后一列将被忽略,换句话说,就是C的行数和列数可以比XYZ1

5.命令surf将指定图形视角为view3)。

6.数据XYZ的范围或者通过对坐标轴的属性XlimMode,YlimMode和ZlimMode的当前设置(可以通过命令axis来设置),将决定坐标轴的标签。

7.参数C的范围或者通过对坐标轴的属性Clim和ClimMode的设置(可以通过命令caxis来设置),将决定颜色刻度化。刻度化的颜色值将作为引用当前色图的下标。

7-32

>>[X,Y,Z] = peaks(30);

>>surf(X,Y,Z)

>>colormap hsv

结果图形为图7-32

 

 

 

命令3  surfc

功能  在矩形区域内显示三维带阴影曲面图,且在曲面下面画出等高线。

用法  surfc(Z)surfc(X,Y,Z)、 surfc(X,Y,Z,C)、 

      surfc(,’PropertyName’,PropertyValue)

      surfc()、 h = surfc() 

     上面各个使用形式的曲面效果与命令surf的相同,只不过是在曲面下面增加了曲面的等高线而已。

7-33

>>[X,Y,Z] = peaks(30);

>>surfc(X,Y,Z)

>>colormap hsv

图形结果为图7-33

 

 

 

命令 surfl

功能  画带光照模式的三维曲面图。该命令显示一个带阴影的曲面,结合了周围的,散射的和镜面反射的光照模式。想获得较平滑的颜色过度,要使用有线性强度变化的色图(如:graycopperbonepink等)。参数X,YZ确定的点定义了参数曲面的“里面”和“外面”,若用户想曲面的“里面”有光照模式,只要使用:

           surfl(X’,Y’,Z’)    

用法  surfl(Z) 以向量z的元素生成一个三维的带阴影的曲面,其中阴影模式中的光源的方位、光照系数为缺省值(见下面)。

      surfl(X,Y,Z) 以矩阵X,YZ生成的一个三维的带阴影的曲面,其中阴影模式中的光源的方位、光照系数为缺省值(见下面)。

      surfl(,’light’) 用一个matlab光照对象(light object)生成一个带颜色、带光照的曲面,这与用缺省光照模式产生的效果不同。

      surfl(…,’cdata’) 改变曲面颜色数据(color data),使曲面成为可反光的曲面。

      surfl(,s) 指定光源与曲面之间的方位s,其中s为一个二维向量[azimuthelevation],或者三维向量[sxsysz]。缺省光源方位为从当前视角开始,逆时针45℉(度)。

      surfl(X,Y,Z,s,k) 指定反射常系数k,其中k为一个定义环境光(ambient light)系数(0<=ka<=1)、漫反射(diffuse reflection)系数(0=kb=1〉、镜面反射(specular reflection)系数(0=ks=1〉与镜面反射亮度(以相素为单位)等的四维向量[kakdksshine],缺省值为k=[0.55 0.6 0.4 10]

      h = surfl(…) 返回一个曲面图形句柄向量h

7-34

>>[X,Y] = meshgrid(-3:1/8:3);

>>Z = peaks(X,Y);

>>surfl(X,Y,Z);

>>shading interp

>>colormap(gray);

图形结果为图7-34

 

 

命令 waterfall

功能  瀑布图

用法  waterfall(X,Y,Z) 用所给参数X、Y与Z的数据画一“瀑布”效果图。若X与Y都是向量,则X与Z的列相对应,Y与Z的行相对应,即length(X)=Z的列数,length(Y)=Z的行数。参数X与Y定义了x-轴与y-轴,Z定义了z-轴的高度,Z同时确定了颜色,所以颜色能恰当地反映曲面的高度。若想研究数据的列,可以输入:waterfall(Z’)或waterfall(X’,Y’,Z’)

      waterfall(Z) 画出一瀑布图,其中缺省地有:X=1:Z的行数,Y=1:Z的行数,且Z同时确定颜色,所以颜色能恰当地反映曲面高度。

      waterfall(,C) 用比例化的颜色值从当前色图中获得颜色,参量C决定颜色的比例,为此,必须与Z同型。系统使用一线性变换,从当前色图中获得颜色。

      h = waterfall(返回patch图形对象的句柄h,可用于画出图形。

7-35

>>[X,Y,Z] = peaks(30);

>>waterfall(X,Y,Z)

图形结果为图7-35

 

 

 

命令 cylinder

功能  生成圆柱图形。该命令生成一单位圆柱体的x-y-z-轴的坐标值。用户可以用命令surf或命令mesh画出圆柱形对象,或者用没有输出参量的形式而立即画出图形。

用法  [X,Y,Z] = cylinder 返回一半径为1、高度为1的圆柱体的x-y-z-轴的坐标值,圆柱体的圆周有20个距离相同的点。

      [X,Y,Z] = cylinder® 返回一半径为r、高度为1的圆柱体的x-y-z-轴的坐标值,圆柱体的圆周有20个距离相同的点。

      [X,Y,Z] = cylinder(r,n) 返回一半径为r、高度为1的圆柱体的x-y-z-轴的坐标值,圆柱体的圆周有指定的n个距离相同的点。

      cylinder(没有任何的输出参量,直接画出圆柱体。

7-36

>>t = 0:pi/10:2*pi;

>>[X,Y,Z] = cylinder(2+(cos(t)).^2);

>>surf(X,Y,Z); axis square

图形结果为图7-36

 

 

 

命令 sphere

功能  生成球体

用法  sphere 生成三维直角坐标系中的单位球体。该单位球体由20*20个面。

      sphere(n) 在当前坐标系中画出有n*n个面的球体

      [X,Y,Z] = sphere(n) 返回三个阶数为(n+1)*(n+1)的,直角坐标系中的坐标矩阵。该命令没有画图,只是返回矩阵。用户可以用命令surfXY,Z)或meshXY,Z)画出球体。

7-37

>>[X,Y,Z]=sphere;

>>mesh(X,Y,Z)

>>hidden off

图形结果为图7-37

 

 

7.2.4  三维数据的其他表现形式命令

命令 pcolor

功能  伪彩色图。该图为一矩形单元的、由参数c定义了颜色的阵列,系统通过c中的每相邻的四点定义的曲面补片而生成一伪彩色图。是从上面向下观看的“平面”曲面图。若用户使用命令shading facetedshading flat,则每一单元的固定颜色是与之相连的角的颜色有关的。所以,C(i,j)定义了单元的地i行与地j列的颜色。C中的最后一行与最后一列都没有用上。若用户使用命令shading interp,则每一单元的颜色是对它的四个顶点的颜色进行一双线性插值后的颜色,这时c的所有元素都参加了运算。

用法  pcolor(C) 画一伪彩色图。C中的元素都线性地映射于当前色图下标。从C映射到当前的色图是由命令colormapcaxis定义的。

      pcolor(X,Y,C) 在参数xy指定的位置上画一由C确定的为彩色图。该图为一逻辑上为矩形、带二维格栅的、顶点在[X(i,j),Y(i,j)]的图形(若XY为矩阵时)。参量XY为指定格栅线的向量或矩阵。若XY为向量,则X对应于C的列,而y对应于C的行;若XY同为矩阵,则必须为同型矩阵。该命令等价于命令:surf(X,Y,0,C),观察角度为:view([0,90])。

      h = pcolor(返回一surface图形对象句柄于h

7-38

>>pcolor(magic(20))

>>colormap(gray(2))

>>axis ij;axis square

图形结果为图7-38

 

 

 

命令 quiver

功能  矢量图或速度图

用法  quiver(U,V) 在范围为x =1:n和y =1:m的坐标系中显示由UV定义的向量,而[m,n]=size(U)=size(V),这种形式是在一个几何矩形中画出UV的,quiver命令本身会自动地画出这些向量,使之不会重叠。

      quiver(X,Y,U,V) 由向量XY中的分量的任意组合而成的向量与。若XY都是向量lengthX=n,而lengthY=m,而[mn]=sizeU=sizeV),向量X对应于矩阵UV的列向量,而向量Y对应于矩阵UV的行向量。

      quiver(,scale) 自动对向量的长度进行处理。使之不会重叠,当然可以对scale进行取值,若scale=2,则向量长度伸长2倍,若scale=0,则如实画出向量图。

      quiver(,LineSpec) 可以指定画矢量图用的线型,符号,颜色,quiver命令会在原来的向量图上画出记号。

      quiver(,LineSpec,'filled') 对用LineSpec指定的记号进行填充

      h = quiver(返回每个向量图的句柄

7-39

   >>[z,x,y]=peaks(30);

   >>[Dx,Dy]=gradient(z,0.1,0.1);

   >>quiver(x,y,Dx,Dy)

图形结果为图7-39

 

 

命令 slice

功能  立体切片图。该命令显示通过立体图形的矩形切片图。

用法  slice(X,Y,Z,V,sx,sy,sz) 显示三元函数V=V(X,Y,Z)确定的超立体形在x-轴、y-轴与z-轴方向上的若干点(对应若干平面。即若函数V=V(X,Y,Z)中有一变量如X取一定值X0,则函数V=V(X0,Y,Z)变成一立体曲面(只不过是将该曲面通过颜色表示高度V,从而显示于一平面而已。)的切片图,各点的坐标由参量向量sxsysz指定。参量X、参量Y与参量Z为三维数组,用于指定立方体V的坐标。参量X、Y与Z必须有单调的、正交的间隔(如同用命令meshgrid生成的一样)。在每一点上的颜色由对超立体 V的三维内插值确定。

      slice(V,sx,sy,sz) 显示三元函数V=V(X,Y,Z)确定的超立体形在x-轴、y-轴与z-轴方向上的若干点(对应若干平面)的切片图,各点的坐标由数量向量sxsysz指定。其中V为三维数组(阶数为m*n*p),缺省地有:X = 1:m、Y = 1:n、Z = 1:p。

      slice(V,XI,YI,ZI) 显示参量矩阵XI、YI与ZI确定的、超立体图形的切面图。参量XI、YI与ZI定义了一曲面,同时会在曲面的点上计算超立体V的值。参量XI、YI与ZI必须为同型矩阵。

      slice(X,Y,Z,V,XI,YI,ZI) 沿着由矩阵XI、YI与ZI定义的曲面画穿过超立体图形V的切片。

      slice(,'method') 指定内插值的方法。‘method’为如下方法之一:‘linear’、

‘cubic’、‘nearest’:

             ‘linear’——指定使用三次线性内插值法(该状态为缺省的);

             ‘cubic’——  指定使用三次立方内插值法;

             ‘nearest’——指定使用最近点内插值法。

      h = slice(返回一曲面图形对象的句柄向量h

命令 axis

功能  坐标轴的刻度与外在显示

用法  axis([xmin xmax ymin ymax]) 设置当前坐标轴的x-轴与y-轴的范围。

      axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 设置当前坐标轴的x-轴、y-轴与z-轴的范围,当前颜色刻度范围。该命令也同时设置当前坐标轴的属性  Xlim、Ylim与Zlim为所给参数列表中的最大值和最小值。另外,坐标轴属性XlimMode、YlimMode与ZlimMode设置为‘manual’。

      v = axis 返回一包含x-轴、y-轴与z-轴的刻度因子的行向量,其中v为一四维或六维向量,这取决于当前坐标为二维还是三维的。返回的值包含当前坐标轴的XLim、Ylim与Zlim属性值。

      axis auto 设置系统到它的缺省动作——自动计算当前轴的范围,这取决于输入参量xyz的数据中的最大值与最小值。同时将当前坐标轴的属性XlimMode、YlimMode与ZlimMode设置为‘auto’用户可以指定对某一坐标轴进行自动操作。例如:

                 axis ’auto x’  将自动计算x-轴的范围;

                 axis ’auto yz’ 将自动计算y-轴与z-轴的范围。

      axis manual axis(axis) 把坐标固定在当前的范围,这样,若保持状态(hold)为on,后面的图形仍用相同界限。该命令设置了属性XLimMode、属性YLimMode与属性ZlimMode为manual

      axis tight 把坐标轴的范围定为数据的范围,即坐标轴中没有多余的部分。

      axis fill 该命令用于将坐标轴的取值范围分别设置为绘图所用数据在相应方向上的最大、最小值。

      axis ij 使用矩阵坐标系:坐标原点在左上角、横坐标(j-轴)的值从左到右增加,纵坐标(i-轴)的值从上到下增加。

      axis xy使用笛卡儿坐标系(缺省):坐标原点在左下角、横坐标(x-轴)的值从左到右增加,纵坐标(y-轴)的值从下到上增加。

      axis equal 设置坐标轴的纵横比,使在每个方向的数据单位都相同。其中x-轴、y-轴与z-轴将根据所给数据在各个方向的数据单位自动调整其纵横比。

      axis image 效果与命令axis equal相同,只是图形区域刚好紧紧包围图象数据。

      axis square 设置当前图形为正方形(或立方体形),系统将调整x-轴、y-轴与z-轴,使它们有相同的长度,同时相应地自动调整数据单位之间的增加量。

      axis normal 自动调整坐标轴的纵横比,还有用于填充图形区域的、显示于坐标轴上的数据单位的纵横比。

7-7显示由上面三个命令设置的坐标轴属性。

7-7

              命令

坐标轴属性

axis equal

axis normal

axis square

axis tightequal

DataAspectRatioMode

[1 1 1]

没有设置

没有设置

[1 1 1]

PlotBoxAspectRatio

manual

auto

auto

Manual

PlotBoxAspectRatioMode

[3 4 4]

没有设置

[1 1 1]

Auto

Stretch-to-fill

禁止

可行

禁止

禁止

      axis vis3d 该命令将冻结坐标系此时的状态,以便进行旋转。

      axis off 关闭所用坐标轴上的标记、格栅和单位标记。但保留由textgtext设置的对象。

      axis on 显示坐标轴上的标记、单位和格栅。

      [mode,visibility,direction] = axis('state') 返回表明当前坐标轴的设置属性的三个字符串,见表7-8

7-8

输出参量

返回字符串

说明

Mode

‘’auto’或

’manual’

若XLimMode、YlimMode与ZlimMode都设置为auto,则modeauto;若XLimMode、YlimMode或者ZlimMode都设置为manual,则modemanual

Visibility

‘’on’或’off’

 

Direction

‘’xy’或’ij’

7-40

>>x = 0:.025:pi/2;

>>plot(x,exp(x).*sin(2*x),'-m<')

>>axis([0  pi/2  0  5])

图形结果为图7-40

 

 

命令5  hidden

功能  在一网格图中显示隐含线条。隐含线条的显示,实际上是显示那些从观察角度观看没有被其他物体遮住的线条。

用法  hidden on 对当前图形打开隐含线条的显示状态,使网格图后面的线条被前面的线条遮住。设置曲面图形对象的属性FaceColor为坐标轴背景颜色。这是系统的缺省操作。

      hidden off 对当前图形关闭隐含线条的显示

      hidden 在两种状态onoff之间切换

7-41

>>mesh(peaks)

>>hidden off

图形结果为图7-41

 

 

 

命令 shading

功能  设置颜色色调属性。该命令控制曲面与补片等的图形对象的颜色色调。同时设置当前坐标轴中的所有曲面与补片图形对象的属性EdgeColor与FaceColor。命令shading设置恰当的属性值,这取决于曲面或补片对象是表现网格图或实曲面。

用法  shading flat 使网格图上的每一线段与每一小面有一相同颜色,该颜色由线段的末端的端点颜色确定;或由小面的、有小型的下标或索引的四个角的颜色确定。

      shading faceted 带重叠的黑色网格线的平面色调模式。这是缺省的色调模式。

      shading interp 在每一线段与曲面上显示不同的颜色,该颜色为通过在每一线段两边的、或者为不同小曲面之间的色图的索引或真颜色进行内插值得到的颜色。

7-42

>>sphere(16)

>>axis square

>>shading flat

>>title('Flat Shading')

图形结果为图7-42

 

 

 

命令 caxis

功能  颜色坐标轴刻度。命令caxis控制着对应色图的数据值的映射图。它影响下面对象之一的、用带索引的颜色数据(CData)与颜色数据映射(CDataMapping)控制的刻度的图形对象surface、patches与images;它没有影响带用颜色数据(CData)或颜色数据映射(CDataMapping)直接设置的颜色的图形对象surfaceimagespatches。该命令还改变坐标轴图形对象的属性Clim与ClimMode。

用法  caxis([cmin cmax]) 用指定的最大值与最小值设置颜色范围。数据值中小于cmin或大于cmax的,将分别地映射于cmincmax;处于cmincmax之间的数据将线性地映射于当前色图。

      caxis auto 让系统自动地计算数据的最大值与最小值对应的颜色范围。这是系统的缺省动作。数据中的正无穷大(Inf)对应于最大颜色值;负无穷大(-Inf)对应于最小颜色值;带颜色值设置为NaN的面或者边界将不显示。

      caxis manualcaxis(caxis) 冻结当前颜色坐标轴的刻度范围。这样,当hold设置为on时,可使后面的图形命令使用相同的颜色范围。

      v = caxis 返回一包含当前正在使用的颜色范围的二维向量v=[cmin cmax]

      caxis(axes_handle,使由参量axis_handle指定的坐标轴,而非当前坐标轴。

颜色坐标轴刻度工作原理:

使用带索引的颜色数据(Cdata)与颜色数据映射(CdataMapping)的图形对象surface、patch与image将设置成刻度化的,在每次图形渲染时,将映射颜色数据值为当前图形的颜色。当颜色数据值等于或小于cmin时,将它映射为当前色图中的第一个颜色;当颜色数据值等于或大于cmax时,将它映射为当前色图中的最后一个颜色;对于处于cmincmax之间的颜色数据(例如c),系统将执行下列线性转换,以获得对应当前色图(它的长度为m)中的颜色的索引(当前色图的行指标index):

              index = fix((C-min)/(cmax-cmin)*m)+1

7-43

>>[X,Y,Z] = sphere;

>>C = Z;surf(X,Y,Z,C)

>>caxis([-1 3])

图形结果为图7-43

 

 

 

命令 view

功能  指定立体图形的观察点。观察者(观察点)的位置决定了坐标轴的方向。用户可以用方位角(azimuth)和仰角(elevation)一起,或者用空间中的一点来确定观察点的位置。

用法  view(az,el)view([az,el]) 给三维空间图形设置观察点的方位角。方位角az与仰角el为这两个旋转角度:做一通过视点与z-轴的平面,与xy平面有一交线,该交线与y-轴的反方向的、按逆时针方向(从z-轴的方向观察)计算的、单位为度的夹角,就是观察点的方位角az。若角度为负值,则按顺时针方向计算;在通过视点与z-轴的平面上,用一直线连接视点与坐标原点,该直线与xy平面的夹角就是观察点的仰角el。若仰角为负值,则观察点转移到曲面下面。

      view([x,y,z]) 在笛卡儿坐标系中于点(x,y,z)设置视点。注意:输入参量只能是方括号的向量形式,而非数学中的点的形式。

      view(2) 设置缺省的二维形式视点。其中az=0,el=90,即从z-轴上方观看。

      view(3) 设置缺省的三维形式视点。其中az=-37.5,el=30。

      view(T) 根据转换矩阵T设置视点。其中T为4*4阶的矩阵,如同用命令viewmtx生成的透视转换矩阵一样。

     [az,el] = view 返回当前的方位角az与仰角el

     T = view 返回当前的4*4阶的转换矩阵T。

7-44

>>peaks;

>>az = 0;el = 90;

>>view(az, el)

图形结果为图7-44

 

 

 

命令 viewmtx

功能  视点转换矩阵。计算一个4*4阶的正交的或透视的转换矩阵,该矩阵将一四维的、齐次的向量转换到一个二维的视平面上(如计算机平面上)。

用法  T = viewmtx(az,el) 返回一与视点的方位角az与仰角el(单位都为度)对应的正交矩阵,并没有改变当前视点。

      T = viewmtx(az,el,phi) 返回一透视的转换矩阵,其中参量phi是单位为度的透视角度,为标准化立方体(单位为度)的对像视角角度与透视扭曲程度。

7-9

Phi的值

说明

0

正交投影

10

类似以远距离投影

25

类似以普通投影

60

类似以广角投影

用户可以通过使用返回的矩阵,用命令view(T)改变视点的位置。该4*4阶的矩阵将变换四维的、同次的向量成形式为(x,y,z,w)的非标准化的向量,其中w不等于1。正交化的x-元素与y-元素组成的向量(x/w,y/w,z/w,1)为我们所需的二维向量。(注:一四维同次向量为在对应的三维向量后面增加一个1。例如:[x,y,z,1]为对应于三维空间中的点[x,y,z]的四维向量。)

      T = viewmtx(az,el,phi,xc) 返回以在标准化的图形立方体中的点xc为目标点的透视矩阵(就像相机正对着点xc一样),目标点xc为视角的中心点。用户可以用一三维向量xc=[xc,yc,zc]指定该中心点,每一分量都在区间[01]上。缺省值为xc=[0 0 0]。

命令10  surfnorm

功能  计算与显示三维曲面的法线。该命令计算用户命令surf中的曲面法线。

用法  surfnorm(Z)、surfnorm(X,Y,Z) 画出一曲面与它的法线图。其中矩阵Z用于指定曲面的高度值;X与Y为向量或矩阵,用于定义曲面的xy部分。

      [Nx,Ny,Nz] = surform(…) 返回组成曲面的法线在三个坐标轴上的投影分量Nx,Ny与Nz。

7-45

>>[x,y,z] = cylinder(1:10);

>>surfnorm(y,x,z)

>>axis([-12 12 -12 12 -0.1 1])

图形结果为图7-45

 



  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 MATLAB6.5 基础 1.1 MATLAB 语言介绍 1.1.1 MATLAB 产品系列与应用 1.1.2 MATLAB6.5 的新特点 1.2 MATLAB 语言基础 1.2.1 认识 MATLAB6.5 环境 1.2.2 MATLAB6.5 变量和表达式 1.2.3 数组的产生 1.2.4 数组的操作 1.2.5 常用的数学函数 1.2.6 数组的运算 1.2.7 数组的扩展 1.2.8 数组的转换 1.2.9 MATLAB 控制语句 1.2.10 其它控制语句 1.2.11 文件操作 1.2.12 M 文件 第二章 MATLAB绘制基础 2.1 二维绘图 2.1.1 基本绘图函数 2.1.2 图窗口的修饰 2.2 三维绘图 2.2.1 plot3 函数 2.2.2 三维网格图和曲面图 第三章 MATLAB对象 3.1 图对象 3.1.1 Root 对象 3.1.2 Figure 对象 3.1.3 Uicontrol 对象 3.1.4 Uimenu 对象 3.1.5 Axes 对象 3.1.6 Image 对象 3.1.7 Line 对象 3.1.8 Patch 对象 3.1.9 Rectangle 对象 3.1.10 Surface 对象 3.1.11 Light 对象 3.1.12 Text 对象 第四章 MATLAB对象操作 4.1 图对象的属性 4.2 图对象句柄的获取 4.2.1 对象创建时获取 4.2.2 层次关系来获取 4.2.3 当前对象的获取 4.2.4 根据对象属性值的获取 4.3 图对象句柄的删除与判断 4.3.1 句柄的删除 4.3.2 句柄的判断 4.4 图对象属性值的获取与设置 4.4.1 图对象属性值的设置 4.4.2 图对象属性值的获取 4.4.3 用户缺省值的操作 4.5 图对象的其它操作 4.5.1 figflag 函数 4.5.2 findfigs 函数 4.5.3 copyobj 函数 4.5.4 capture 函数 4.5.5 refresh 函数 4.5.6 saveas 函数 4.5.7 hgload 函数和 hgsave 函数 4.5.8 newplot 函数 第五章 GUI 设计 5.1 认识 GUI 环境 5.1.1 版面设计工具 5.1.2 属性编辑器 5.1.3 菜单编辑器 5.1.4 调整工具 5.1.5 对象浏览器 5.1.6 TAB 次序编辑器 5.1.7 GUIDE 环境设置 5.2 GUI 设计 5.2.1 GUI 设计原则 5.2.2 GUI 设计步骤 5.3 GUI 实现 5.3.1 组件的布局 5.3.2 属性编辑 5.3.3 回调函数 5.4 GUI 实例 5.4.1 组件布局 5.4.2 属性值的修改 5.4.3 回调函数 5.4.4 调试程序 5.4.5 执行的效果 5.4.6 结束语 第六章 MATLAB 特殊图的绘制 6.1 区域图 6.2 填充图 6.2.1 二维填充图 6.2.2 三维填充图 6.3 条图 6.3.1 二维条图 6.3.1 三维图 6.4 直方图 6.4.1 笛卡儿坐标系下的直方图 6.4.2 极坐标系下的直方图 6.5 圆体图 6.5.1 圆柱体的绘制 6.5.2 球体的绘制 6.5.3 椭圆体的绘制 6.6 饼图 6.6.1 二维饼图 6.6.2 三维饼图 6.7 排列图 6.8 离散图的绘制 6.8.1 二维柄状图 6.8.2 三维柄状图 6.8.3 阶梯图 6.9 散点图 6.9.1 二维散点图 6.9.2 三维散点图 6.9.3 散点图矩阵 6.10 轮廓图 6.10.1 二维轮廓图 6.10.2 三维轮廓图 6.11 向量图 6.11.1 罗盘图 6.11.2 羽状图 6.11.3 箭头图 6.11.4 法线图 第七章 MATLAB 高级绘图功能 7.1 彗星图 7.1.1 二维彗星轨迹图 7.1.2 三维彗星轨迹图 7.2 帧动画 7.3 程序动画 7.4 色图变幻 7.5 Voronoi 图和三角剖分 7.6 四面体 7.7 彩带图 7.7.1 彩带图 7.7.2 三维流彩带图 7.8 伪彩图 7.9 切片图 7.9.1 切片图 7.9.2 切片轮廓线图 7.10 网格图和曲面图特效 7.10.1 显示轮廓线 7.10.2 显示围裙 7.10.3 瀑布效果 7.10.4 带光照模式的阴影图 7.11 函数绘图 7.12 三维图控制 7.12.1 视点 7.12.2 图旋转 7.12.3 灯光效果 7.12.4 色彩控制 第八章 数字图像原理 8.1 图像 8.2 数字图像处理学 8.2.1 数字图像处理方法 8.2.2 数字图像处理的主要内容 8.3 图像文件格式 8.4 图像类型 8.4.1 索引图像 8.4.2 灰度图像 8.4.3 RGB 图像 8.4.4 二值图像 8.4.5 图像序列 8.4.6 图类型判断 8.5 图像类型转换 8.5.1 dither 函数 8.5.2 gray2ind 函数 8.5.3 grayslice 函数 8.5.4 im2bw 函数 8.5.5 ind2gray 函数 8.5.6 ind2rgb 函数 8.5.7 mat2gray 函数 8.5.8 rgb2gray 函数 8.5.9 rgb2ind 函数 8.6 MATLAB 中的 8 位和 16 位图像 8.6.1 8 位和 16 位索引图像 8.6.2 8 位和 16 位灰度图像 8.6.3 8 位和 16 位 RGB 图像 8.7 图像文件的操作 8.7.1 查询图像文件的信息 8.7.2 图像文件的读取 8.7.3 图像文件的存储 8.7.4 图像数据类型的转换 8.7.5 图像文件格式的转换 第九章 MATLAB 图像显示与色彩 9.1 图像显示 9.1.1 imshow 函数 9.1.2 显示索引图像 9.1.3 显示灰度图像 9.1.4 显示二值图像 9.1.5 显示真彩图像 9.1.6 直接从磁盘文件中显示图像 9.2 特殊图像显示技术 9.2.1 显示颜色条 9.2.2 显示多帧图像序列 9.2.3 显示多幅图像序列 9.3 纹理映射 9.4 图像颜色 9.4.1 图像的退色处理 9.4.2 MATLAB 的颜色模型 9.4.3 MATLAB 颜色模型的转换 9.4.4 色彩处理 第十章 MATLAB 图像正交变换 10.1 正交变换通用算子 10.2 傅立叶变换 10.2.1 傅立叶变换的原理 10.2.2 傅立叶性质 10.2.3 二维离散傅立叶变换( 2DDFT ) 10.2.4 快速傅立叶变换( FFT ) 10.2.5 傅立叶变换的研究与应用 10.3 离散余弦变换 10.3.1 DCT 变换矩阵 10.3.2 dct2 函数和 dctmtx 函数 10.4 Walsh- Hadamard 变换 10.5 Radon 变换 10.6 小波变换 10.6.1 小波的定义 10.6.2 小波变换函数 10.6.3 小波变换实例 10.6.4 小波除噪与压缩函数 第十一章 滤波器的设计 11.1 线性滤波 11.1.1 卷积与相关 11.1.2 imfilter 滤波函数 11.1.3 预定义滤波 11.2 FIR 滤波器的设计 11.2.1 FIR 滤波器基础 11.2.2 计算二维频率响应 11.2.3 计算期望频率响应矩阵 11.2.4 频率变换法 11.2.5 频率采样法 11.2.6 窗函数法 第十二章 MATLAB 图像运算 12.1 图像点的运算 12.1.1 线性点运算 12.1.2 非线性点运算 12.2 图像的算术运算 12.2.1 加法运算 12.2.2 减 法运算 12.2.3 乘法 运算 12.2.4 除法 运算 12.2.5 其它运算 12.3 图像的位逻辑运算 12.4 图像的几何运算 12.4.1 图像插值 12.4.2 图像缩放 12.4.3 图像旋转 12.4.4 图像剪切 12.5 空间变换 12.5.1 仿射变换( affine transformation ) 12.5.2 透视变换 (Perspective Transformation) 12.5.3 空间变换的 MATLAB 函数 12.5.4 空间变换实例 12.6 图像融合 12.7 邻域与块操作 12.7.1 邻域操作 12.7.2 图像块操作 12.8 区域处理 12.8.1 区域选择 12.8.2 区域滤波 12.8.3 区域填充 第十三章 MATLAB 图像增强 13.1 灰度变换增强 13.1.1 像素值及其统计特性 13.1.2 直方图灰度变换 13.1.3 直方图均衡化 13.1.4 直方图规定化 13.2 空域滤波增强 13.2.1 平滑滤波器 13.2.2 锐化滤波器 13.3 频域增强 13.3.1 低通滤波器 13.3.2 高通滤波器 13.3.3 同态滤波器 13.3.4 频域增强 MATLAB 实例 13.4 色彩增强 13.4.1 真彩色增强 13.4.2 伪彩色增强 13.5 小波增强 第十四章 图像复原 14.1 退化模型 14.1.1 连续退化模型 14.1.2 离散退化模型 14.2 复原的代数方法 14.2.1 代数复原原理 14.2.2 逆滤波复原 14.2.3 最小二乘方滤波 14.3 MATLAB 实现图像复原 14.3.1 维纳滤波复原 14.3.2 规则化滤波复原 14.3.3 Lucy-Richardson 复原 14.3.4 盲去卷积复原 14.3.5 图像复原的其它 MATLAB 函数 第十五章 图像分析 15.1 边缘检测 15.1.1 微分算子 15.1.2 Log算子 15.1.3 Canny 算子 15.2 四叉树分解 15.2.1 四叉树分解 15.2.2 四叉树 MATLAB 函数 第十六章 数学态学操作 16.1 数学态学的基本运算 16.1.1 结构元素矩阵 16.1.2 膨胀运算 16.1.3 腐蚀运算 16.1.4 膨胀与腐蚀的对偶关系 16.1.5 开运算和闭运算 16.1.6 击中与击不中 16.1.7 二值图像态学处理函数 16.1.8 其它膨胀和腐蚀的基本函数 16.2 态学的基本应用 16.2.1 边缘提取 16.2.2 连通对象标注 16.2.3 对象选择 16.2.4 二值图像面积提取 16.2.5 二值图像的欧拉数 16.2.6 移除对象 16.2.7 区域填充 16.3 查找表操作 16.4 灰度态学 16.4.1 灰度态学基本运算实例 16.4.2 其它函数 第十七 章 图像编码与压缩 17.1 图像编码基础 17.1.1 图像编码压缩的必要性 17.1.2 图像编码压缩的可能性 17.1.3 图像编码压缩的分类 17.1.4 图像编码压缩的评价 17.2 无损压缩编码 17.2.1 行程编码 17.2.2 哈夫曼( Huffman )编码 17.2.3 算术编码 17.2.4 词典编码 17.3 有损压缩编码 17.3.1 预测编码 17.3.2 正交变换编码 17.3.3 MATLAB 实现余弦变换压缩 17.3.4 MATLAB 实现小波变换压缩 附录 A 对象属性 附录 B 图像工具箱函数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值