第3章 matlab数据的图形表示_第1页
第3章 matlab数据的图形表示_第2页
第3章 matlab数据的图形表示_第3页
第3章 matlab数据的图形表示_第4页
第3章 matlab数据的图形表示_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

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

文档简介

数值计算与MATLAB

1/31/20231第3章MATLAB数据的图形表示23.1matlab二维绘图Matlab作图是通过描点、连线来实现的,故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标和纵坐标),然后将该点集的坐标传给Matlab函数画图.33.1.1基本二维绘图使用函数(命令)为plot,其基本使用格式为:(1)plot(y)功能:绘制数组y对应于其元素序数的二维曲线图,如果y为复数向量,则绘制虚部对于实部的二维曲线图.

4例:y=[00.62.358.311.71517.719.420];

plot(y)由于y矢量有10个元素,x坐标自动定义为[12345678910].5(2)plot(x,y)功能:绘制由x,y所确定的曲线.1)x,y是两组向量,且它们的长度相等,则plot(x,y)可以直观地绘出以x为横坐标,y为纵坐标的图形.

6例,作函数的图象

解x=linspace(0,2*pi);y=sin(x)plot(x,y);或x=0:0.001:2*piy=sin(x)plot(x,y);782)当plot(x,y)中,x是向量,y是矩阵时,则绘制y矩阵中各行或列对应于向量x的曲线.如果y阵中行的长度与x向量的长度相同,则以y的行数据作为一组绘图数据;如果y阵中列的长度与x向量的长度相同,则以y的列数据作为一组绘图数据;如果y阵中行,列均与x向量的长度相同,则以y的每列数据作为一组绘图数据.9例:下面的程序可同时绘出三条曲线.MATLAB在绘制多条曲线时,会按照一定的规律自动变化每条曲线的的颜色.

x=0:pi/50:2*pi;y(1,:)=sin(x);y(2,:)=0.6*sin(x);y(3,:)=0.3*sin(x);%以上语句生成矩阵y.

plot(x,y)或者还可以这样用:x=0:pi/50:2*pi;

y=[sin(x);0.6*sin(x);0.3*sin(x)];

plot(x,y)

10113)如果x,y是同样大小的矩阵,则plot(x,y)绘出y中各列相应于x中各列的图形.

例: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(1,:)=sin(x(1,:));y(2,:)=0.6*sin(x(2,:));y(3,:)=0.3*sin(x(3,:));

plot(x,y)x=x';y=y';figure

plot(x,y)121314在这个例子中,x------3x101,y------3x101,所以第一个plot按列画出101条曲线,每条3个点;而x'------101x3,y'------101x3,所以第二个plot按列画出3条曲线,每条101个点.

15例2绘制多条不同线型x=linspace(0,2*pi);gain=[5,10,20,30,50,80,100];fori=1:7y=gain(i)*(sin(x)./(x.*x+1));plot(x,y);holdonend1617注:如果已经存在一个图形窗口,则新的plot命令将清除当前窗口的图形,绘制新的图形。如果在一个图形窗口中同时作多条曲线,则plot自动以不同的颜色画不同的曲线如果一个参量为矩阵,另一个参量为向量,则plot命令画出矩阵每一列对该向量的曲线18(3)plot(x,y,‘linespecifiers’)功能:Plot等画图命令(所有的高级画图函数,除了ezplot等以外)可以添加参数’linespecifiers’来确定以下属性:Linestyle线条的类型.Color线条的颜色Markersymbol数据点的形状19符号颜色符号标记符号线型b蓝色.点-实线g绿色。圆圈:点线r红色×叉号-.点划线c青色*星号――虚线m紫红色s正方形y黄色d菱形k黑色v三角形(下)w白色^三角形(上)<三角形(左)>三角形(右)p五角星h六边形20注:1)这些选项可以连在一起用,如:'-.g'表示绘制绿色的点划线,'g+s'表示用绿色的'+'号绘制曲线,数据点用方块标记。2)表示属性的符号必须放在同一对单引号中,3)与先后顺序无关;4)指定的属性中,同一种属性不能有两个以上.

21例:t=0:0.5:2*pi;y1=sin(t);plot(t,y1,'s-r')

22(4)plot(…,‘PropertyName',’PropertyValue,...)功能:设置包括线的宽度(LineWidth)、标记点的边缘颜色(MarkerEdgeColor)、填充颜色(MarkerFaceColor)、标记点的大小(MarkerSize)等其它绘图属性.

23例:t=0:pi/20:pi;

y=sin(4*t).*sin(t)/2;plot(t,y,'-bs','LineWidth',2,...

'MarkerEdgeColor','k',...'MarkerFaceColor','y',...'MarkerSize',10)以上画图命令设置线的宽度为2,设置标记点边缘颜色为黑色,设置标记点填充颜色为黄色,设置标记点的尺寸为10

2425(5)plot(x1,y1,选项1,x2,y2,选项2,……)功能:多条曲线画在同一个坐标轴下。例:t=0:0.1:2*pi;

y1=sin(t);

y2=cos(t);

y3=sin(t).*cos(t);

plot(t,y1,'-r',t,y2,':g',t,y3,'*b')

2627由MATLAB绘制的二维图形可以由下面的一些命令简单地修饰。如gridon——加网格线xlabel(‘字符串’)——给横坐标轴加说明ylabel(‘字符串’)——给纵坐标轴加说明,并自动旋转90度title(‘字符串’)——给整个图形加标题axis([xmin

xmax

ymin

ymax])——手动地设置x,y

坐标轴范围

plotyy

函数——绘制具有两个纵坐标刻度的图形28例2设置默认坐标的colororder与linestyleorder解set(0,'DefaultAxesColorOrder',[001])set(0,'DefaultAxesLineStyleOrder',{'-*','-o',':s','-.d'})x=-pi:pi/10:pi;y1=sin(x);y2=cos(x);y3=sin(x-pi/2);plot(x,y1,x,y2,x,y3);legend('sin(x)','cos(x)','sin(x-\pi/2)')set(gcf,'Menubar','none','position',[250250400350])

2930坐标系的分割在MATLAB图形绘制中是很有特色的,比较规则的分割方式是用subplot函数定义的,其标准调用格式为:subplot(n,m,k),其中,n和m为将图形窗口分成的行数和列数,而k为相对的编号。例如在标准的Bode图绘制中需要将窗口分为上下两个部分(即n=2,m=1),分割后上部编号为1,下部编号为2。31例3连续函数的可视化——用图形表示连续调制波形y=sin(t)sin(9t)。t1=(0:11)/11*pi;y1=sin(t1).*sin(9*t1);t2=(0:100)/100*pi;y2=sin(t2).*sin(9*t2);subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图(1)')subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图(2)')subplot(2,2,3),plot(t1,y1,t1,y1,'r.')axis([0,pi,-1,1]),title('子图(3)')subplot(2,2,4),plot(t2,y2)axis([0,pi,-1,1]),title('子图(4)')3233(6)具有两个纵坐标标度的图形在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。基本调用格式为:plotyy(x1,y1,x2,y2)其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。34例:用不同标度在同一坐标内绘制曲线y1=0.2e-0.5*x*cos(4πx)和y2=2e-0.5xcos(πx)。程序如下:x=0:0.01:20;y1=200*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);plotyy(x,y1,x,y2);35例:用不同标度在同一坐标内绘制曲线y1=0.2e-0.5*x*cos(4πx)和y2=2e-0.5xcos(πx)。程序如下:x=0:0.01:20;y1=200*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);plotyy(x,y1,x,y2);36373.1.2二维特殊函数area填充绘图;bar条形图;barh水平条形图;comet彗星图;ezpolar简单绘制极坐标图;feather矢量图;hist直方图;pie饼状图;rose极坐标系下的柱状图等等,以上各函数均有不同的调用方法,详细内容同学们可以通过MATLAB在线帮助获得。38二维特殊函数图函数名说明函数名说明area填充绘图feather矢量图bar条形图harh水平条形图hist直方图pie饼图polar极坐标图contour等高线图表:Matlab中常见二维特殊图形函数39例绘制矩形图y=[32-221;-13372;-75593];area(y)40例绘制多组长条图x=[012345];y=[213540.5];bar(x,y)set(gcf,'MenuBar','none','Position',[400,350,250,150]);

41【例】>>subplot(2,1,1)x=1:10;>>y=rand(10,1);>>bar(x,y)>>subplot(2,1,2)>>x=[111234353658595480818283848586];>>hist(x)barhist42用绘制直方图的几种命令绘制直方图。X=-2:2;Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];subplot(2,2,1)bar(X,Y','r')xlabel('x')ylabel('y')colormap(cool)subplot(2,2,2)barh(X,Y','grouped')xlabel('y')ylabel('x')colormap(cool)subplot(2,2,3)bar(X,Y','stacked')xlabel('x')ylabel('\Sigmay')colormap(summer)subplot(2,2,4)barh(X,Y','stacked')xlabel('y');ylabel('\Sigmax')colormap(summer)43离散数据图形绘制x=0:0.25:(3*pi);stem(x,sin(x));%stem(x,sin(x),’sr’,’fill’);title('stem(x,sin(x))');xlabel('x');x=0:0.25:(3*pi);stem(x,sin(x),’sr’,’fill’);title('stem(x,sin(x))');xlabel('x');44例,绘制阶梯曲线x=0:pi/20:2*pi;y=sin(x);stairs(x,y)45例:绘制极坐标绘图t=0:2*pi/90:2*piy=cos(4*t)polar(t,y)46例:绘制火柴杆绘图

t=0:0.2:2*pi;y=cos(t);stem(y)47例:绘制直方图

t=0:0.2:2*pi;y=cos(t);bar(y)48例:绘制彗星曲线图

t=-pi:pi/500:pi;y=tan(sin(t))-sin(tan(t));comet(t,y)49x=peaks;plot(x)x=1:length(peaks);y=peaks;plot(x,y)50h2=[11;1-1];h4=[h2h2;h2-h2];h8=[h4h4;h4-h4];t=1:8;fori=1:8subplot(8,1,i);stairs(t,h8(i,:))axis('off')end51MATLAB绘制的其它图像的例子:例5.某次考试学生成绩优秀的占8%,良好的占20%,中等的占36%,及格的占24%,不及格的占12%。分别用饼图和条形图表示。解:>>x=[820362412];>>subplot(2,2,1);pie(x,[10001]);>>title('饼图');>>subplot(2,2,2);bar(x,'grouped');>>title('垂直条形图');>>subplot(223);bar(x,'stack');>>title('累加值为纵坐标的垂直条形图');>>subplot(224);barh(x,'group');>>title('水平条形图');5253多次叠绘前面已介绍过plot在同一次调用中画多条曲线的功能。实际应用中,还会遇到在已经存在的图上再绘制一条或多条曲线的情况。为此,MATLAB提供了以下指令:holdon 使当前轴及图形保持而不被刷新,准备接受 此后将绘制的新曲线holdoff 使当前轴及图形不再具备不刷新的性质hold 当前图形是否具备刷新性质的双向切换开关例:利用hold绘制离散信号通过零阶保持器后产生的波形。54例:在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx)程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);plot(x,y1)holdony2=2*exp(-0.5*x).*cos(pi*x);plot(x,y2);holdoff55563.1.3填充多边图图形填充函数fill格式:fill(X,Y,C)功能:填充二维多边形,多边形由向量X,Y来定义,填充的色由C来确定。多边形的顶点是由一组X,Y元素来确定,必要时应组成一个闭合的曲线。C可以从’r’,’g’,’b’,’c’,’m’,’k’选出一种色填充也可以是一个GRB向量[r,g,b],用它来确定所填充的色。57例3.8试通过fill绘制八边形t=(1/16:1/8:1)'*2*pi;%定义八角形的刻度x=sin(t);y=cos(t);%类似圆形但刻度较大H=fill(x,y,'r');axissquareset(H,'LineWidth',5)%设置八角形的边线宽度set(gcf,'Color','w','Position',[400,350,250,150],'MenuBar','none')set(gca,'Visible','off')%将坐标轴隐藏58593.2matlab三维绘图1.三维曲线绘图命令

三维函数

plot3主要用来表现单参数的三维曲线,与二维绘图函数plot相比,只多了第三维数据。其调用格式为:plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,…)参数的含义如下:Xn、Yn、Zn:第一到三维数据,是尺寸相等的向量/矩阵;s、s1、s2:是字符串,用来设置线型、颜色、数据点标记。60x、y、z

是向量时,plot3命令的使用t=0:0.1:8*pi;plot3(sin(t),cos(t),t)title(’绘制螺旋线’)%用命令title对图形主题进行标注

xlabel(’sin(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’)ylabel(’cos(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’)zlabel(’t’,’FontWeight’,’bold’,’FontAngle’,’italic’)

%命令zlabel

用来指定z轴的数据名称gridonx、y、z

都是矩阵时,plot3命令的使用[X,Y]=meshgrid(-pi:0.1:pi);Z=sin(X)+cos(Y);plot3(X,Y,Z)61例绘制三维曲线。程序如下:t=0:pi/100:20*pi;x=sin(t);y=cos(t);z=t.*sin(t).*cos(t);plot3(x,y,z);title('Linein3-DSpace');xlabel('X');ylabel('Y');zlabel('Z');gridon;62632.三维曲面绘图命令为了绘制定义在平面区域D=[x0,xm]×[y0,yn]上的三维曲面z=f(x,y)

,首先将[x0,xm]在x方向分成m份,将[y0,yn]在y方向分成n份,由各划点分别作平行于坐标轴的直线,将区域D分成m×n

个小矩形;对于每个小矩形,计算出网格点的函数值,决定出空间中四个顶点(xi,yi,f(xi,yi)),连接四个顶点得到一个空间的四边形片;所有四边形片连在一起构成函数z=f(x,y)定义在区域D上的空间网格曲面。因此,三维曲面绘图命令可分为平面网格点的生成、在平面网格基础上绘制三维网格及对三维表面进行处理三个步骤64a.平面网格点的生成函数命令meshgrid

用来生成x-y

平面上的网格点矩阵。调用形式为:[X,Y]=meshgrid(x,y)[X,Y]=meshgrid(x)等价于[X,Y]=meshgrid(x,x)参数含义如下:x:是区间[x0,xm]上分划的向量;y:是区间[y0,yn]上分划的向量;X,Y:输出变量矩阵,矩阵X的行向量都是向量x,矩阵Y的列向量都是向量y。函数

meshgrid

将由两个向量决定的区域转换为对应的网格点矩阵。65函数,定义区域为[-2,2]×[-2,2]。生成网格并计算其网格点上的函数值。[X,Y]=meshgrid(-2:2:2,-2:2:2);[X,Y]%将划分结果输出至矩阵

ans=-202-2-2

-2

-202000-202222Z=X.*exp(-X.^2-Y.^2);%计算网格点上的函数值赋予变量ZZ=-0.000700.0007-0.036600.0366-0.000700.000766b.三维网格命令mesh利用函数mesh生成网格曲面。调用格式为:mesh(X,Y,Z,C):X、Y、Z、C

是同维数的矩阵,X、Y、Z对应空间上的网格点,网格线颜色由C决定;mesh(X,Y,Z):相当于上面的C=Z的情况;mesh(x,y,Z,C):x

和y是向量,Z和C是同维数的矩阵,网格曲面的网格顶点是(x(j),y(i),Z(i,j)),网格线的颜色由矩阵C决定;mesh(x,y,Z):相当于上面的C=Z的情况;mesh(Z,C):等价于mesh(x,y,Z,C),此时向量x=1:n,向量y=1:m;mesh(Z):相当于上面的C=Z的情况mesh(...,’PropertyName’,PropertyValue,...):给函mesh设置曲面属性。67用mesh命令绘制上例中的网格曲面。

[X,Y]=meshgrid(-2:.2:2,-2:.2:2);Z=X.*exp(-X.^2-Y.^2);

mesh(Z)与

mesh相关的另外两个函数是

meshc

meshz,它们的调用形式与

mesh相同。68例在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。程序如下:[x,y]=meshgrid(-8:0.5:8);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);subplot(2,2,1);mesh(x,y,z);title('mesh(x,y,z)')subplot(2,2,2);meshc(x,y,z);%三维网格曲面title('meshc(x,y,z)')subplot(2,2,3);meshz(x,y,z)%带底座的三维网格曲面title('meshz(x,y,z)')subplot(2,2,4);surf(x,y,z);title('surf(x,y,z)')6970c.三维表面命令surf函数

surf可实现对网格曲面片进行着色,将网格曲面转化为实曲面。surf命令的调用格式与

mesh相同。利用三维网格表面命令surf绘制图形。

z=peaks;%绘制山峰的图像,将函数值赋予变量z

surf(z)%对山峰的图像进行着色处理shadinginterp

%函数

shading改变着色方式

713.等高线图形的绘制4.三维视图可视效果的控制5.柱面和球面的三维表达(<高数>书)72a.柱面的表达cylinder

cylinder命令中,柱面的轴线定义为z轴,只要给出母线的描述就可完成一个柱面。

调用格式为:

[X,Y,Z]=cylinder(R,N);[X,Y,Z]=cylinder(R):缺省值

N=20;

[X,Y,Z]=cylinder:缺省值N=20,R=[1,1]。R:是一描述柱面母线的向量;N:是旋转柱面上的分割线条数;[X,Y,Z]:是返回的x,y,z坐标向量。

绘制一个柱面。

t=pi:0.01:3*pi;r=sin(t)+t;cylinder(r,30)shadinginterp73例绘制标准三维曲面图形。程序如下:t=0:pi/20:2*pi;[x,y,z]=cylinder(2+sin(t),30);subplot(2,2,1);surf(x,y,z);subplot(2,2,2);[x,y,z]=sphere;surf(x,y,z);subplot(2,1,2);[x,y,z]=peaks(30);surf(x,y,z);74b.球面的表达sphere

调用格式为:[X,Y,Z]=sphere(N):产生一个(N+1)×(N+1)的矩阵,然后用函数surf命令绘制一个单位的球面,N为设置分割线的条数;[X,Y,Z]=sphere:缺省值

N=20。画一个球面。

[X,Y,Z]=sphere;

surf(X,Y,Z)75其他三维图形在介绍二维图形时,曾提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、stem3、pie3和fill3。bar3函数绘制三维条形图,常用格式为:bar3(y)bar3(x,y)76stem3函数绘制离散序列数据的三维杆图,常用格式为:stem3(z)stem3(x,y,z)pie3函数绘制三维饼图,常用格式为:pie3(x)fill3函数等效于三维函数fill,可在三维空间内绘制出填充过的多边形,常用格式为:fill3(x,y,z,c)77例绘制多峰函数的瀑布图和等高线图。程序如下:subplot(1,2,1);[X,Y,Z]=peaks(30);waterfall(X,Y,Z)xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');subplot(1,2,2);contour3(X,Y,Z,12,'k');%其中12代表高度的等级数xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');7879绘制三维饼状图【例】>>x=[2,4,6,8];>>pie3(x,[1,1,1,1]);%第二个参数控制各块的分离80绘图示例>>z=peaks(20);>>surf(z)>>t=0:pi/6:4*pi;>>[x,y,z]=cylinder(4+cos(t),30);>>surf(x,y,z)81例:马鞍面绘制%马鞍面函数%z=x^2-2y^2t2=-30:.3:30;[x2,y2]=meshgrid(t2);z2=x2.^2-2*y2.^2;mesh(x2,y2,z2);title('马鞍面')82绘制不规则的3-D图形x=rand(100,1)*2*pi;y=rand(100,1)*pi;z=sin(x).*cos(y);[X,Y]=meshgrid(linspace(min(x),max(x),40),linspace(min(y),max(y),40));Z=griddata(x,y,z,X,Y,'cubic');mesh(X,Y,Z);%Viewinterpolatedsurfaceholdon;plot3(x,y,z,'.','markersize',10);83示例:绘制二元函数图形画出函数的图形,其中(x,y)属于[-3,3]*[-3,3]绘制的步骤是?84%准备数据,指定定义域x=-3:0.1:3;y=-3:0.1:3;%将向量x,y指定区域转化为矩阵X,Y[X,Y]=meshgrid(x,y);%产生函数值Z=sqrt(X.^2+Y.^2);%mesh绘制网格,surf绘制完整表面surf(X,Y,Z)绘制的步骤是?85大功告成86示例:再绘马鞍面观察两个曲面相交,马鞍面z=x^2-2y^2和平行于Z轴平面绘制的步骤是?87示例:再绘马鞍面观察两个曲面相交,马鞍面z=x^2-2y^2和平行于Z轴平面绘制的步骤是?88%准备数据,指定定义域并转化为矩阵x,y[x,y]=meshgrid(-10:0.2:10,-10:0.2:10);%产生函数值z1=(x.^2-2*y.^2)+eps;a=20;z2=a*ones(size(x));%mesh绘制网格,surf绘制完整表面mesh(x,y,z1);holdon;%保持图形mesh(x,y,z2);绘制的步骤是?8990示例:绘制圆锥面u,v在-2pi至2pi命令为ezsurfezsurf('u*sin(v)','u*cos(v)','u',[-2*pi,2*pi,-2*pi,2*pi])91surfc(X,Y,Z)—带等高线的曲面图

[X,Y,Z]=peaks(30);surfc(X,Y,Z)92绘制图形:(1)某企业全年各季度的产值(单位:万元)分别为:2347,1827,2043,3025,试用饼图作统计分析。(2)绘制复数的向量图:7+2.9i、2-3i和-1.5-6i。93程序如下:subplot(1,2,1);pie([2347,1827,2043,3025]);title('饼图');legend('一季度','二季度','三季度','四季度');subplot(1,2,2);compass([7+2.9i,2-3i,-1.5-6i]);title(‘向量图');9495例:编一个画宝石项链的程序clear;t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,'b-',x,y,z,'bd')view([-80,60])boxonlegend('链子','宝石');9697例:绘制三维图形:(1)绘制魔方阵的三维条形图。(2)以三维杆图形式绘制曲线y=2sin(x)。(3)已知x=[2347,1827,2043,3025],绘制饼图。(4)用随机的顶点坐标值画出五个黄色三角形。98程序如下:subplot(2,2,1);bar3(magic(4))subplot(2,2,2);y=2*sin(0:pi/10:2*pi);stem3(y);subplot(2,2,3);pie3([2347,1827,2043,3025]);subplot(2,2,4);fill3(rand(3,5),rand(3,5),rand(3,5),'y')991003.3图形修饰处理3.3.1视点处理MATLAB提供了设置视点的函数view,其调用格式为:view(az,el)其中az为方位角,el为仰角,它们均以度为单位。系统缺省的视点定义为方位角-37.5°,仰角30°。101view函数的使用:>>[X,Y]=meshgrid([-5:0.2:5]);Z=exp(0.5*(X.^2-Y.^2));surf(X,Y,Z)view(30,60)102例:z=peaks(40);subplot(2,2,1);mesh(z);subplot(2,2,2);mesh(z);view(-15,60);subplot(2,2,3);mesh(z);view(-90,0);subplot(2,2,4);mesh(z);view(-7,-10)103例:z=peaks(40);subplot(2,2,1);surf(z);subplot(2,2,2);surf(z);view(-15,60);subplot(2,2,3);surf(z);view(-90,0);subplot(2,2,4);surf(z);view(-7,-10)104其它修饰:(1)水线修饰(2)等高线修饰105(1)水线修饰使用waterfall命令可在X方向或Y方向产生水流效果对于网线图和曲面图,水线修饰效果一样106例:>>z=peaks(40);waterfall(z)107(2)等高线修饰meshc函数用来绘制具有等高线性质的mesh网线surfc函数绘制具有等高线性质的surf曲面1083.3.2色彩处理1.颜色的向量表示MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。向量元素在[0,1]范围取值,3个元素分别表示红、绿、蓝3种颜色的相对亮度,称为RGB三元组。109颜色映像理解Red(红)Green(绿)Blue(蓝)颜

色000黑111白100红010绿001蓝110黄101洋红011青蓝2/301天蓝11/20橘黄0.500深红0.50.50.5灰色110颜色映像理解函

数功

述hsv色彩饱和值(以红色开始和结束)hot从黑到红到黄到白cool青蓝和洋红的色度pink粉红的彩色度gray线性灰度bone带一点蓝色的灰度jethsv的一种变形(以蓝色开始和结束)copper线性铜色度prim三棱镜,交替为红色、橘黄色、黄色、绿色和天蓝色flag交替为红色、白色、蓝色和黑色111颜色映像使用句colormap(M)将矩阵M作为当前图形窗口所用的颜色映像。例如,colormap(cool)装入了一个有64个输入项的cool颜色映像。colormapdefault装入了默认的颜色映像(hsv)。函数plot、plot3、contour和contour3不使用颜色映像,它们使用列在plot颜色和线形表中的颜色。而大多数其他绘图函数,比如mesh、surf、fill、pcolor和它们的各种变形函数,使用当前的颜色映像。1122.色图色图(Colormap)是MATLAB系统引入的概念。在MATLAB中,每个图形窗口只能有一个色图。色图是m×3的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。1133.三维表面图形的着色三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。shadingfaceted命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色。这是系统的缺省着色方式。114shadingflat命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。shadinginterp命令在网格片内采用颜色插值处理,得出的表面图显得最光滑。115例:3种图形着色方式的效果展示。程序如下:close[x,y,z]=sphere;colormap(copper);subplot(1,3,1);

surf(x,y,z);axisequalsubplot(1,3,2);

surf(x,y,z);shadingflat;axisequalsubplot(1,3,3);

surf(x,y,z);shading

interp;axisequal1163.4.3光照处理MATLAB提供了灯光设置的函数,其调用格式为:light('Color',选项1,'Style',选项2,'Position',选项3)117例:光照处理后的球面。程序如下:[x,y,z]=sphere(20);subplot(1,2,1);

surf(x,y,z);axisequal;light('Posi',[0,1,1]);shadinginterp;holdon;plot3(0,1,1,'p');text(0,1,1,'light');subplot(1,2,2);surf(x,y,z);axisequal;light('Posi',[1,0,1]);shadinginterp;holdon;plot3(1,0,1,'p');text(1,0,1,'light');1183.4.4图形的裁剪处理例:绘制三维曲面图,并进行插值着色处理,裁掉图中x和y都小于0部分。程序如下:[x,y]=meshgrid(-5:0.1:5);z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);surf(x,y,z);shading

interp;pause%程序暂停i=find(x<=0&y<=0);z1=z;z1(i)=NaN;surf(x,y,z1);shadinginterp;为了展示裁剪效果,第一个曲面绘制完成后暂停,然后显示裁剪后的曲面。119裁剪前120裁剪后1213.5图像处理与动画制作3.5.1图像处理Matlab提供函数读写图像数据图形图像文件操作相关函数以MAT文件加载或保存矩阵数据loadsave加载或保存图形格式,如BMP、TIFF等imread

imwrite显示加载到MAtlab中的图像imageimagesc表:Matlab图形图像文件读写和查询函数1221.imread和imwrite函数imread和imwrite函数分别用于将图像文件读入MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。MATLAB支持多种图像文件格式,如.bmp、.jpg、.jpeg、.tif等。1232.image和imagesc函数这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。例:有一图像文件flower.jpg,在图形窗口显示该图像。程序如下:[x,cmap]=imread('flower.jpg');%读取图像的数据阵和色图阵image(x);colormap(cmap);axisimageoff%保持宽高比并取消坐标轴

124【例】>>x=[1234;5678;9101112];image(x)colormap(colorcube(12))1253.imshow函数从文件中显示图像imshow('flower.jpg')

或与imread结合使用p=imread('flower.jpg');imshow(p)126imwrite(A,filename,format)A可以是一个M×N的二维矩阵,也可以是M×N×3的三维矩阵图形将以参数filename为文件名以参数format为文件后缀,如jpg,png,TIFF等loadearthimage(X)colormap(map)axisimageimwrite(X,map,'earth.jpg')127综合例子例:绘制复杂的三维曲面第一步:准备数据>>z=peaks(20);第二步:选择图形窗体>>figure(1);clf128基本三维绘图(续)第三步:调用3D绘图函数>>h=surf(z)h=101.0073129基本三维绘图(续)第四步:设置调色板和投影算法>>colormaphot(hot:以黑、红、黄、白四种色彩为过渡色的色调)130基本三维绘图(续)第四步:设置调色板和投影算法(续)>>shadinginterp131基本三维绘图(续)第四步:设置调色板和投影算法(续)>>set(h,'EdgeColor','k')132基本三维绘图(续)第五步:增加光照>>light('Position',[-2,2,20])133基本三维绘图(续)第五步:增加光照(续)>>lightingphong134基本三维绘图(续)第六步:设置材质>>material([0.4,0.6,0.5,30])set(h,'FaceColor',[00.70.7],'BackFa

温馨提示

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

评论

0/150

提交评论