1、MATLAB程序设计基础,MATLAB的图形处理,二维图形,基本绘图命令plot(Y)Y为实向量,则以Y的索引坐标作为横坐标,Y作为纵坐标来绘制图形。例:y=rand(100,1);plot(y),如果Y为复数向量,则以向量的实部作为横坐标,虚部作为纵坐标,来绘制图形。例:x=rand(100,1);z=x+y.*i;plot(z),plot(X,Y)第一个变量作为横坐标,第二个变量作为纵坐标。例:x=0:0.01*pi:pi;y=sin(x).*cos(x);plot(x,y)注:两个向量必须维数相同且同为行向量或列向量。,当X和Y为同阶矩阵时,按照矩阵的行或列操作,可以在同一幅图中绘出所有
2、曲线。例:x=0:0.01*pi:pi;y=sin(x),cos(x);plot(x,x,y);,plot(X,Y,s)s参数:-实线.点*星号 上三角:点线o 圆s 方形 右三角-虚线+号v 下三角p 正五边形 y 黄色m 紫红色c 蓝绿色r 红色 g 绿色b 蓝色w 白色k 黑色 上述参数的不同组合可以为图形设置不同的线形、颜色和标识,调用时以单引号来引用,各选项直接相连,不需要分隔符。,例:x=0:0.1*pi:pi;y=sin(x);z=cos(x);plot(x,y,-k,x,z,-.rd),特殊二维图形函数,特殊坐标系的二维函数对数坐标 semilogx、semilogy、logl
3、og格式与plot类似。例:x=1:0.1*pi:2*pi;y=sin(x);semilogx(x,y,-*),极坐标系 polar(theta,rho)polar(theta,rho,s)其中,theta为角向量,rho为幅向量,s为图形属性选项。例:x=1:0.01*pi:4*pi;y=sin(x/2)+x;polar(x,y,-),双y轴坐标系 plotyy(X1,Y1,X2,Y2)plotyy(X1,Y1,X2,Y2,fun)plotyy(X1,Y1,X2,Y2,fun1,fun2)其中,fun、fun1、fun2可以为plot、semilogx、semilogy、loglog等。例:
4、x=1:0.1*pi:2*pi;y=sin(x);z=exp(x);plotyy(x,y,x,z,plot,semilogy),二维特殊函数图 area 填充绘图fplot函数图绘制 bar 条形图hist直方图 barh 水平条形图paretoPareto图 comet 彗星图pie饼状图 errorbar 误差带图plotmatrix 分散矩阵图 ezplot 简单绘制函数图ribbon三位图的二维条状显示 ezpolar 简单绘制极坐标图scatter散射图 feather 矢量图stem离散序列饼状图 fill 多边形填充stairs阶梯图,例:绘制条形图?x=1:10;?y=rand
5、(10,1);?bar(x,y);例:绘制矢量图?x=0:0.1*pi:2*pi;?y=x.*sin(x);?feather(x,y),例:函数图形绘制?lim=0,2*pi,-1,1;?fplot(sin(x),cos(x),lim),例:绘制饼图?x=2 4 6 8;?pie(x),绘制等高线图 contour(Z,N/V)contour(X,Y,Z,N/V)N为所绘等高线的条数,V为输入向量,等高线的值为对应向量的元素值。例:?a=rosser;?v=-1000,-500,-100,0,100,500,1000;?contour(a,v)?contourf(a,v),三维图形,基本绘图命
6、令 plot3函数 plot3(x,y,z)x,y,z为相同维数的向量,绘出这些向量表示的点的曲线。plot3(X,Y,Z)X,Y,Z为相同阶数的矩阵,绘出矩阵列向量的曲线。plot3(X,Y,Z,s)s为定义线型的字符串。plot3(x1,y1,z1,s1,x2,y2,s2,),例:绘三维螺旋线?x=0:pi/50:10*pi;?y=sin(x);?z=cos(x);?plot3(x,y,z);,网图函数 X,Y=meshgrid(x,y)x,y为给定向量,用来定义网格的划分区域和划分方法。矩阵X和Y为网格划分后的数据矩阵。例:?x,y=meshgrid(-3:0.1:3,-2:0.1:2)
7、;?z=(x.2-2*x).*exp(-x.2-y.2-x.*y);?plot3(x,y,z),mesh(X,Y,Z)绘制彩色网格面图形 mesh(x,y,Z)x,y为两个向量,要求 length(y),length(x)=size(Z)mesh(Z)m,n=size(Z),则使用x=1:n及y=1:m例:?x=-8:0.5:8;y=x;?a=ones(size(y)*x;?b=y*ones(size(x);?c=sqrt(a.2+b.2)+eps;?z=sin(c)./c;?mesh(z),meshc与mesh调用方式相同,且能绘制相应的等高线。例:?x,y=meshgrid(-4:0.5:
8、4);?z=sqrt(x.2+y.2);?meshc(z),meshz与mesh调用方式相同,增加了边界面屏蔽。例:?x,y=meshgrid(-4:0.5:4);?z=sqrt(x.2+y.2);?meshz(x,y,z),着色函数 surf(X,Y,Z)绘制着色的三维表面图,参数设置与mesh相同。例:?x,y=meshgrid(-4:0.5:4);?z=sqrt(x.2+y.2);?surf(x,y,z),三维等高线例:?waterfall(z)?x,y=meshgrid(-4:0.5:4);?contour3(peaks(x,y),25);,特殊三维图形函数 bar3 三维条形图sur
9、fc 着色与等高线结合 comet3 三维彗星轨迹图trisurf 三角形表面图 ezgraph3 函数控制绘制三位图trimesh 三角形网格图 pie3 三维饼状图waterfall 瀑布图 scatter3 三维散射图cylinder 柱面图 stem3 三维离散数据图sphere 球面图,绘三维饼图例:?x=2 4 6 8;?pie3(x,0,0,1,0),柱面图:X,Y,Z=cylinder(R,N)R为母线向量,N为旋转圆周上分割线的条数。例:?x=0:pi/20:pi*3;?r=5+cos(x);?a,b,c=cylinder(r,30);?mesh(a,b,c),图形处理常用技
10、术,图形控制坐标轴控制函数 axis(V)V为坐标轴范围数组:二维图形:V=XMIN,XMAX,YMIN,YMAX 三维图形:V=XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX,axis 控制字符串 auto自动模式 axis当前坐标设置固定 equal控制各坐标轴的分度使其相等 square使绘图区为正方形 normal解除对坐标轴的任何限制,坐标轴缩放函数 zoom 控制字符串 实现对二维图的缩放 on 允许对图形缩放 off 禁止对图形缩放(factor)以factor为缩放因子进行坐标轴缩放 out 恢复所进行的一切缩放 xon 只允许对x轴进行缩放 yon 只允许对y轴进
11、行缩放,平面坐标网格函数 grid on/off 显示和取消网格坐标轴封闭函数 box on/off 四周显示坐标轴和常规坐标轴,图形的标注,坐标轴标注 title xlabel ylabel(标注,属性1,属性值1,)例:?x=0:0.1*pi:2*pi;?y=sin(x);?plot(x,y)?xlabel(x(02pi),FontWeight,bold);?ylabel(y=sin(x),FontWeight,bold);?title(正弦函数,Fontsize,12,fontweight,bold,fontname,黑体),特殊符号的输入 转义符号 alphaGamma betaDel
12、ta gammaTheta deltaLambda epsilonXi zetaPi etaomega theta,标注的显示控制 bf 黑体 it 斜体 rm 标准形式 fontnamefontname 字体名 fontsize(fontsize)字体大小 特殊符号如”、”“、”“等,用”来引导。,上标和下标 调用符为”_”和”,相应的内容置于 内。例:?x=-10:0.1:10;?y=exp(-x.2/2);?title(bf y=e-x2/2),文本标注 text(x,y,标注文本及控制字符串)(x,y)为给定标注文本在途中添加的位置。例:?x=1:0.1*pi:2*pi;?y=sin(
13、x);?plot(x,y);?text(3*pi/4,sin(3*pi/4),leftarrow sin(3pi/4)=-7.707),复杂文本标注例:?x=1:0.1*pi:2*pi;?y=sin(x);?plot(x,y);?text(3*pi/4,sin(3*pi/4),leftarrow sin(3pi/4)=,num2str(sin(3*pi/4),fontsize,12)?text(5*pi/4,sin(5*pi/4),sin(5pi/4)=,num2str(sin(5*pi/4),rightarrow,.horizontalalignment,right,fontsize,12)
14、,交互式文本标注 gtext(s)执行时,图形中出现“十”字型交叉线供用户选择标注位置。S为标注内容的字符串,标注内容为多行时,s为一单元型字符数组。,图例标注 legend(标注1,标注2,)标注1、标注2等分别对应绘图过程中绘制的先后顺序的曲线。例:?x=1:0.1*pi:2*pi;?y=sin(x);?z=cos(x);?plot(x,y,x,z)?legend(sin(x),cos(x),legend(标注,定位代号)定位代号:0 自动定位 1 右上角 2 左上角 3 左下角 4 右下角 1 右外侧,图形的保持和子图,图形的保持 hold on 启动图形保持功能,此后所有的图形都添加到
15、当前的图形窗口中,系统会自动调整坐标。hold off 关闭图形保持功能。例:?x=0:0.1*pi:2*pi;?y=sin(x);?z=cos(x);?plot(x,y,-*)?hold on?plot(x,z,-o)?plot(x,y+z,-h)?legend(sin(x),cos(x),sin(x)+cos(x),0)?hold off,子图 subplot(m,n,p)将一个图形窗口分隔成mn格区域,参数p指定子绘图区域。例:?x=0:0.1*pi:2*pi;?subplot(2,2,1);?plot(x,sin(x),-*)?title(sin(x)?subplot(2,2,2);?
16、plot(x,cos(x),-o)?title(cos(x)?subplot(2,2,3);?plot(x,sin(x).*cos(x),-x)?title(sin(x)*cos(x)?subplot(2,2,4);?plot(x,sin(x)+cos(x),-h)?title(sin(x)+cos(x),图形处理的高级技术,颜色 采用RGB色系,由矩阵R,G,B来表示颜色的映像。,常用的颜色映像(默认状态为643颜色矩阵),着色过程生成颜色映像 colormap(c)c为颜色映像矩阵,3列,行数不限图形应用函数 如pcolor、colorbar等着色方式 shading c c为控制字符串,
17、分别为faceted、interp和flat。其中faceted以平面作为着色单位,为默认形式;interp以插值形式为图形像点着色;flat以平滑形式着色。,pcolor(c)以当前的颜色映像为矩阵c进行着色。例:?colormap(hot(80)?pcolor(rand(6,8);?shading interp,rgbplot(c)将矩阵的三列值分别以红、绿、蓝绘出。,colorbar(vert)%垂直显示颜色标尺 colorbar(horiz)%水平显示颜色标尺例:?x,y,z=peaks;?mesh(x,y,z);?colormap(hot(80);?colorbar,brighten
18、(beta)beta大于零时,增加当前的色彩强度;相反,当beta小于零时,削弱当前的颜色强度。,caxis(cmin,cmax)cmin,cmax=caxis 函数自动控制图形中色彩和数值的对应关系。colordef colordef none 将图形背景与窗口背景设为相同 colordef black 将图形背景设为黑色 colordef white 将图形背景设为白色,视觉与光照,视觉控制view(az,el)az为方位角,即xy平面旋转的角度,顺时针方向旋转的角度为正;el为仰角,即从xy平面向z轴旋转的角度,朝向z轴的旋转(仰视)为正角度;单位均为度,而非弧度。view(2)二维图形
19、中视角的默认值(0,90)view(3)三维图形中视角的默认值(-37.5,30)az,el=view 返回当前图形的视角。,例:Z轴正方向俯视图?contourf(a,v)?x,y,z=peaks;?colormap(hsv(100)?mesh(x,y,z)?view(0,90),viewmtx 给出指定视角的正交转换矩阵。?a=viewmtx(0,90)a=1.0000 0 0 0 0 1.0000 0.0000 0 0-0.0000 1.0000 0 0 0 0 1.0000,rotate3d 触发图形窗口的Rotate3d选项,使用户可以方便的以鼠标来控制视角的变化。,光照控制 lig
20、ht(属性1,属性值1,属性2,属性值2,)属性包括Color,Style,Position和Visible等。例:?x,y,z=peaks;?mesh(x,y,z)?light(position,1,1,1),lighting 光源模式 光源模式为flat、gouraud、phong以及none等;其中flat为平面模式,光照单元为图形网格;gourand为点模式,光照单元为象素点;phong为以象素为光照基本单元,且计算各点的反射比;none为关闭图形光源功能。,material 表面控制模式 模式有shiny、dull、metal等,其中shiny使图形表面显示较为光亮的色彩模式,dul
21、l指表面显示较为阴暗的色彩模式,metal指表面呈现金属色泽模式。,surfl(X,Y,Z,S,K)S为光源控制变量具体形式为Sx,Sy,Sz光源位置和az,el视角;K为控制图形的表面形式,具体形式为Ka,Kd,Ks,spread,其中,Ka表示背景光系数,Kd反映表面漫反射特性,Ks反映表面镜面反射特性,spread为镜面扩展因子。,例:?x,y,z=peaks;?surfl(x,y,z,1,1,1,0.55,0.8,0.1,0.1),光滑曲线,例:?x,y,z=peaks;?surf(x,y,z)?shading interp,图像处理,用户可以对外部图形进行操作,或将MATLAB图形转
22、换成其他图形类型。A=imread(filename,fmt)filename为图形文件名,fmt为图形类型,如果图形为灰度图像,则返回值A为两列矩阵;如果图形为彩色,则返回值为三列矩阵。matlab所识别的图形大致为jpeg、tiff、bmp、png、hdf、pcx和xwd。,imwrite(A,filename,fmt)将图像矩阵写入外部文件,参数同imread。imfinfo(filename,fmt)返回一结构数组,反映图形详细的信息。,?pictureinfo=imfinfo(s.jpg,jpg)pictureinfo=Filename:s.jpg FileModDate:15-Jan-2002 15:57:54 FileSize:14875 Format:jpg FormatVersion:Width:320 Height:240 BitDepth:24 ColorType:truecolor FormatSignature:,image(c)显示图形,c为图形数据矩阵。,