3-Matlab绘图基础-应用数学------概率与统计_第1页
3-Matlab绘图基础-应用数学------概率与统计_第2页
3-Matlab绘图基础-应用数学------概率与统计_第3页
3-Matlab绘图基础-应用数学------概率与统计_第4页
3-Matlab绘图基础-应用数学------概率与统计_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

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

文档简介

1、2020/9/15,天 津 科 技 大 学 数 学 系 谢中华 办公室:泰达4号楼211室 电话:60600830 E-mail: MATLAB统计分析与应用:40个案例分析 ,MATLAB绘图基础,2020/9/15,MATLAB设有大量函数和命令来绘制出各种各样的图形,具有强大的绘图功能,2020/9/15,主要内容 图形对象与图形句柄 二维图形绘制 三维图形绘制 动画制作,2020/9/15,第一节 图形对象与图形对象句柄,2020/9/15,一、什么是图形对象与图形句柄,图形窗口、线条、曲面和注释等都被看作是MATLAB中的图形对象,所有这些图形对象都可以通过一个被称为“句柄值”的东西

2、加以控制,例如可以通过一个线条的句柄值来修改线条的颜色、宽度和线型等属性。这里所谓的“句柄值”其实就是一个数值,每个图形对象都对应一个唯一的句柄值,它就像一个指针,与图形对象一一对应。例如可以通过命令h = figure返回一个图形窗口的句柄值。,2020/9/15,句柄式图形对象继承关系图,Parent(父),Children(子),2020/9/15,二、获取图形对象属性名称和属性值,%绘制一条直线,并返回其句柄值赋给变量h h = line(0 1,0 1) h = 0.0149 %获取句柄值为h的图形对象的所有属性名及相应属性值 get(h),2020/9/15,三、设置图形对象属性值

3、, subplot(1, 2, 1); %绘制两个子图中的第1个 %绘制一条直线,并返回其句柄值赋给变量h1 h1 = line(0 1,0 1) ; text(0, 0.5, 未改变线宽) ; %在(0, 0.5)处加注释 subplot(1, 2, 2); %绘制两个子图中的第2个 %绘制一条直线,并返回其句柄值赋给变量h2 h2 = line(0 1,0 1) ; set(h2, LineWidth, 3) %设置线宽为3 text(0, 0.5, 已改变线宽) ; %在(0, 0.5)处加注释,2020/9/15,第二节 二维图形绘制,2020/9/15,一、基本二维绘图函数,MATL

4、AB 中提供了plot,loglog,semilogx,semilogy,polar,plotyy 等6个非常实用的基本二维绘图函数,下面重点介绍plot函数的用法,2020/9/15,1. plot函数,plot(Y) plot(X,Y) plot(X1,Y1, X2,Y2,.) plot(X1,Y1,LineSpec,.) plot(.,PropertyName,PropertyValue,.) plot(axes_handle,.) h = plot(.) hlines = plot(v6,.),调用格式:,2020/9/15,【例2-0】给定横纵坐标数据,绘制线图,x,y,1,2,3,

5、5,7,7.5,8,6.5,7,7,5.5,4,6,8,10,2,% 定义向量 x 和 y x=1 1.5 2 3 5 7 7.5 8 10; y=2 5 6.5 7 7 5.5 4 6 8; % 绘制线图 plot(x,y),1.5,5,2020/9/15,【例2-1】同时绘制多条线, x=3,5,9;3,10,67;3,23,90; x = 3 5 9 3 10 67 3 23 90 plot(x),2020/9/15, x1=linspace(0,2*pi,100); x2=linspace(0,3*pi,100); x3=linspace(0,4*pi,100); y1=sin(x1)

6、; y2=1+sin(x2); y3=2+sin(x3); x=x1;x2;x3; y=y1;y2;y3; plot(x,y,x1,y1-1,r-*),2020/9/15,线型、描点类型、颜色参数表,线条属性的修改,2020/9/15,【例2-2】画标准正态分布的密度函数图像。,% 产生一个从-3到3,步长为0.25的向量 x = -3 : 0.25 : 3; % 计算x中各点处的标准正态分布的密度函数值 y = normpdf(x, 0, 1); plot(x, y, -ro,. LineWidth,2,. MarkerEdgeColor,k,. MarkerFaceColor,0.49,

7、1, 0.63,. MarkerSize,12) xlabel(X); ylabel(Y); % 为X轴,Y轴加标签,2020/9/15,2020/9/15,2. loglog函数:双对数坐标绘图, x = logspace(-1,2); loglog(x,exp(x),-s) grid on % 为X轴,Y轴加标签 xlabel(X); ylabel(Y);,2020/9/15,3. semilogx,semilogy函数:半对数坐标绘图, x = 0 : 0.1 : 10; semilogy(x, 10.x) xlabel(X); ylabel(Y);,2020/9/15,4. polar

8、函数:极坐标绘图, t = 0 : 0.01 : 2*pi; polar(t, sin(2*t).*cos(2*t),-r),2020/9/15,5. plotyy函数:双纵坐标绘图, x = 0:0.01:20; % 定义横坐标向量 y1 = 200*exp(-0.05*x).*sin(x); % 纵坐标向量 y2 = 0.8*exp(-0.5*x).*sin(10*x); % 纵坐标向量 ax = plotyy(x,y1,x,y2,plot); xlabel(X); set(get(ax(1),Ylabel),string,Left Y); % 左Y轴标签 set(get(ax(2),Yl

9、abel),string,Right Y); % 右Y轴标签,2020/9/15,双纵坐标绘图,2020/9/15,二、二维图形修饰和添加注释,可以通过MATLAB命令对图形进行修饰和添加注释,也可以通过图形窗口的菜单项和工具栏完成这些工作。后者通过鼠标点击操作,相对比较简单,下面仅对相关命令进行介绍,2020/9/15,Text,二维绘图的图例标注说明,2020/9/15,hold 函数:开启和关闭图形窗口的图形保持功能 axis 函数:设置坐标系的刻度和显示方式 grid 函数:为当前坐标系添加网格 title 函数:为当前坐标系添加标题 xlabel和ylabel 函数:为当前坐标轴添加

10、标签 text函数:在当前坐标系中添加文本对象(text对象) gtext函数:在当前坐标系中交互式添加文本对象 legend函数:在当前坐标系中添加line对象和patch对象的图形标注框 annotation函数:在当前图形窗口建立注释对象(annotation对象),2020/9/15, P = 3 1; 1 4; r = 5; V, D = eig(P); % 求特征值,将椭圆化为标准方程 a = sqrt(r/D(1); % 椭圆长半轴 b = sqrt(r/D(4); % 椭圆短半轴 % 等间隔产生一个从0到2pi的包含60个元素的向量 t = linspace(0, 2*pi,

11、60); xy = V*a*cos(t); b*sin(t); % 根据椭圆的极坐标方程计算椭圆上点的坐标 plot(xy(1,:),xy(2,:), k, linewidth, 3); % 绘制椭圆曲线,线宽为3,颜色为黑色 % 在当前图形窗口加入带箭头的文本标注框 h = annotation(textarrow,0.606 0.65,0.55 0.65);,【例2-3】根据椭圆方程 绘制椭圆曲线,并修饰图形。,2020/9/15,% 设置文本标注框中显示的字符串,并设字号为15 set(h, string,3x2+2xy+4y2 = 5, fontsize, 15); % 为图形加标题,

12、设字号为18,加粗 h = title(这是一个椭圆曲线, fontsize, 18, fontweight, bold); set(h, position, -0.00345622 1.35769 1.00011); % 设置标题的位置 axis(-1.5 1.5 -1.2 1.7); % 设置坐标轴的显示范围 xlabel(X); % 为X轴加标签 ylabel(Y); % 为Y轴加标签,2020/9/15, a = -19.6749 22.2118 5.0905; % 定义曲线方程对应的匿名函数 fun = (a,x)a(1)+a(2)/2*(x-0.17).2+a(3)/4*(x-0.

13、17).4; x = 0:0.01:1; y = fun(a, x); % 计算x对应的纵坐标的值 plot(x,y); % 绘制线图形 xlabel(X); ylabel(Y = f(X); % 为XY轴加标签 % 在图形上点(0.05,-12)处添加曲线方程 text(Interpreter,latex,. String,$-19.6749+frac22.21182(x-0.17)2. +frac5.09054(x-0.17)4$,Position,0.05, -12,. FontSize,12);,【例2-4】绘制曲线 并添加曲线方程。,2020/9/15,2020/9/15,三、常用统

14、计绘图函数,常用统计绘图函数列表,2020/9/15,%产生1000个标准正态分布随机数 x = normrnd(0, 1, 1000, 1); hist(x, 20); %绘制直方图 xlabel(样本数据); %为x轴加标签 ylabel(频数) ; %为y轴加标签 figure; %新建一个图形窗口 cdfplot(x); %绘制经验分布函数图,【例2-5】用normrnd函数产生1000个标准正态分布随机数,并做出频数直方图和经验分布函数图。,2020/9/15,频数直方图,经验分布函数图,2020/9/15,四、特殊二维绘图函数,特殊二维绘图函数列表,2020/9/15, subpl

15、ot(3, 3, 1); f = (x)200*sin(x)./x; %定义匿名函数 fplot(f, -20 20); %绘制函数图像,设置横坐标范围为-20, 20 title(y = 200*sin(x)/x); %设置标题 subplot(3, 3, 2); ezplot(x2 + y2 = 1, -1.1 1.1); %绘制单位圆,横坐标从-1.1到1.1 axis equal; %设置坐标系的显示方式 title(单位圆); subplot(3, 3, 3); ezpolar(1+cos(t); %绘制心形图 title(心形图); subplot(3, 3, 4); x = 10

16、 10 20 25 35; %制定各部分所占比例,【例2-6】特殊二维图形。,2020/9/15, name = 赵, 钱, 孙, 李, 谢; %指定各部分名称 explode = 0 0 0 0 1; %设置第5部分分离出来 pie(x, explode, name) %绘制饼图 title(饼图); subplot(3, 3, 5); stairs(-2*pi:0.5:2*pi,sin(-2*pi:0.5:2*pi); %绘制楼梯图 title(楼梯图); subplot(3, 3, 6); stem(-2*pi:0.5:2*pi,sin(-2*pi:0.5:2*pi); %绘制火柴杆图

17、title(火柴杆图); subplot(3, 3, 7); Z = eig(randn(20,20); %求2020的标准正态分布随机数矩阵的特征值 compass(Z); %绘制罗盘图 title(罗盘图);,2020/9/15, subplot(3, 3, 8); theta = (-90:10:90)*pi/180; r = 2*ones(size(theta); %产生与theta等长的向量,元素全是2 u,v = pol2cart(theta,r); %将极坐标转成直角坐标 feather(u,v); %绘制羽毛图 title(羽毛图); subplot(3, 3, 9); t =

18、 (1/16:1/8:1)*2*pi; fill(sin(t), cos(t),r); %绘制填充多边形 axis square; title(八边形);,2020/9/15,2020/9/15,第三节 三维图形绘制,2020/9/15,一、常用三维绘图函数,2020/9/15, t = linspace(0, 10*pi, 300); %产生一个行向量 plot3(20*sin(t), 20*cos(t), t, r, linewidth, 2); %绘制螺旋线 hold on %图形保持 quiver3(0,0,0,1,0,0,25,k,filled,LineWidth,2); %添加箭头

19、作为x轴 quiver3(0,0,0,0,1,0,25,k,filled,LineWidth,2); %添加箭头作为y轴 quiver3(0,0,0,0,0,1,40,k,filled,LineWidth,2); %添加箭头作为z轴 grid on %添加网格 xlabel(X); ylabel(Y); zlabel(Z); %添加坐标轴标签 axis(-25 25 -25 25 0 40); %设置坐标轴范围 view(-210,30); %设置视角,【例2-7】用plot3函数绘制三维螺旋线。,2020/9/15,% 根据x轴的划分(1:4)和y轴的划分(2:5)产生网格数据x和y x,y

20、 = meshgrid(1:4, 2:5) x = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 y = 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 plot(x, y, r,x, y, r, x, y, k.,markersize,18); % 绘制平面网格 axis(0 5 1 6); % 设置坐标轴的范围 xlabel(X); ylabel(Y); % 为X轴,Y轴加标签,【例2-8】用meshgrid函数生成网格矩阵,并用plot函数画出平面网格图形。,2020/9/15, x = linspace(-3,3,20); % 产生向量x y = li

21、nspace(-9,9,20); % 产生向量y X, Y = meshgrid(x,y); %产生网格矩阵X和Y %计算二元正态分布密度函数值 Z = mvnpdf(X(:) Y(:), 0 0, 1 2;2 9); Z = reshape(Z, size(X); %将Z转换成与X同样大小的矩阵 subplot(2, 2, 1); mesh(X, Y, Z); %绘制网格图 title(mesh); %加标题,【例2-9】用mesh,surf,surfl,surfc函数绘制二元正态分布的密度函数图。,2020/9/15, subplot(2, 2, 2); surf(X, Y, Z); %绘

22、制面图 alpha(0.5); %设置透明度为半透明 title(surf); subplot(2, 2, 3); surfl(X, Y, Z); %绘制带有灯光效果的面图 title(surfl); subplot(2, 2, 4); surfc(X, Y, Z); %绘制带有等高线的面图 title(surfc);,2020/9/15,2020/9/15, x,y=meshgrid(0:0.25:4*pi); z=sin(x+sin(y)-x/10; mesh(x,y,z); axis(0 4*pi 0 4*pi -2.5 1);,【例2-10】绘制三维曲面图z=sin(x+sin(y)-

23、x/10。,2020/9/15,% 绘制圆柱面 subplot(2,2,1); x,y,z = cylinder; surf(x,y,z); % 绘制哑铃面 subplot(2,2,2); t = 0:pi/10:2*pi; X,Y,Z = cylinder(2+cos(t); surf(X,Y,Z);,【例2-11】调用函数绘制柱面,球面,椭球面。,2020/9/15,% 绘制球面,半径为10,球心 (1,1,1) subplot(2,2,3); x,y,z = sphere; surf(10*x+1,10*y+1,10*z+1); axis equal; % 绘制椭球面 subplot(2

24、,2,4); a=4; b=3; t = -b:b/10:b; x,y,z = cylinder(a*sqrt(1-t.2/b2),30); surf(x,y,z);,2020/9/15,2020/9/15, subplot(2,2,1); pie3(2347,1827,2043,3025); % 饼图 subplot(2,2,2); bar3(magic(4); % 柱状图 subplot(2,2,3); y=2*sin(0:pi/10:2*pi); stem3(y); % 火柴杆图 subplot(2,2,4); fill3(rand(3,5),rand(3,5),rand(3,5), y

25、 ); % 填充图,【例2-12】调用函数绘制三维饼图,柱状图,火柴杆图,填充图,2020/9/15,2020/9/15, ezsurf(u*sin(v),u*cos(v), u,-2*pi,2*pi,-2*pi,2*pi),【例2-13】调用ezsurf函数绘制圆锥面,2020/9/15, ezsurf(u*sin(v),u*cos(v), 4*v,-2*pi,2*pi,-2*pi,2*pi),【例2-14】调用ezsurf函数绘制螺面,2020/9/15, ezmesh(3*cos(u)*sin(v),2*cos(u)*cos(v),sin(u),-2*pi,2*pi,-2*pi,2*pi

26、),【例2-15】调用ezsurf函数绘制椭球面,2020/9/15,二、三维图形的修饰和添加注释,1. 绘图色彩的调整,colormap 函数 colormap(map),设置map为当前颜色映像矩阵 colormap(default),恢复当前颜色映像矩阵为默认值 cmap = colormap,获取当前颜色映像矩阵 colormap(ax,),设置当前axes对象的颜色映像矩阵,MATLAB中提供了colormap函数,可以根据颜色映像矩阵对图形对象的色彩进行调整。所谓的颜色映像矩阵就是一个 的矩阵,k行表示有k种颜色,每行3个元素分别代表红、绿、蓝三元色的灰度值,取值均在0,1之间。,

27、map的设置有两种,可以人为指定一个元素值均在0,1之间的 的矩阵,也可以用MATLAB自带的17种颜色映像矩阵。在MATLAB命令窗口分别运行autumn、bone、colorcube、cool、copper、flag、gray、hot、hsv、jet、lines、pink、prism、spring、summer、white和winter函数,就可得到这17种颜色映像矩阵,2020/9/15,2. 颜色渲染属性调整,shading 函数 shading flat,平面渲染,同一个小网格面和相应的线段用同一种颜色渲染。 shading faceted,类似于shading flat,平面渲染,

28、只是网格线都用黑色,这是默认渲染方式。 shading interp,通过颜色插值方式渲染。 shading(axes_handle,),为句柄值为axes_handle的坐标系内的图形对象设置渲染方式。,2020/9/15,3. 透明度调整,利用alpha函数调整透明度 调用:alpha(alpha_data) 说明:alpha_data是一个介于0和1之间的数,alpha_data = 0表示完全透明,alpha_data = 1表示完全不透明,alpha_data 的值越接近于0,透明度越高,通过图形对象的“FaceAlpha”属性调整透明度 调用:set(h,FaceAlpha,0.2

29、5); 说明:h为图形对象句柄,0.25是“FaceAlpha”属性的属性值,由用户随意指定。,2020/9/15,4. 光源设置与属性调整,light函数 light(PropertyName,propertyvalue,) 建立一个光源,并设置光源属性(Position、Color和Style) handle = light() 建立一个光源,并获取其句柄值handle,之后可以通过get(handle)查看光源的所有属性。,2020/9/15,5. 调整光照模式,lighting函数 lighting flat,产生均匀光照,选择此方法,以查看面对象,是光照模式的默认设置。 lighti

30、ng gouraud,计算顶点法线并作线性插值修改表面颜色,选择此方法,以查看曲面对象。 lighting phong,做线性插值并计算每个像素的反射率来修改表面颜色,选择此方法,以查看曲面对象。此方法比lighting gouraud的效果好,但是用于渲染的时间较长。,2020/9/15,6. 调整视点位置,view函数 view(az,el),设置三维绘图的视角, az是方位角,el表示相对于xoy平面的仰角,。,2020/9/15,view(x,y,z),设置视点的三维直角坐标x, y, z. view(2),设置默认的二维视角,az = 0, el = 90. view(3),设置默认

31、的三维视角,az = -37.5, el = 30. view(ax,),设置句柄值为ax的坐标系的视角。 view(T),用viewmtx函数生成的 的视角转换矩阵作为输入来设置视角。 az,el = view,返回当前方向角和仰角。 T = view,返回一个 的视角转换矩阵。,2020/9/15, t=0:pi/20:2*pi; %产生一个向量 x,y,z= cylinder(2+sin(t),100); %产生花瓶的三维网格数据 surf(x,y,z); %绘制三维面图 xlabel(X); ylabel(Y); zlabel(Z); %为坐标轴加标签 set(gca,color,no

32、ne); %设置坐标面的颜色为无色 shading interp; %设置渲染属性 colormap(copper); %设置色彩属性 light(Posi,-4 -1 0); %在(-4, -1, 0)点处建立一个光源 lighting phong; %设置光照模式 material metal; %设置面的反射属性 hold on; plot3(-4,-1,0,p,markersize, 18); %在光源位置画一个五角星,大小为18 text(-4,-1,0,光源,fontsize,14,fontweight,bold); %添加文本注释,14号字,粗体,【例2-16】绘制带光照的花瓶。

33、,2020/9/15,2020/9/15,%立方体顶点坐标 vert = 0 0 0;0 200 0;200 200 0;200 0 0;0 0 100;0 200 100;200 200 100;200 0 100; fac = 1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8; %规定顶点顺序 view(3); %设置视角 %通过patch对象生成绿色的立方体盒子 h = patch(faces,fac,vertices,vert,FaceColor,g); set(h,FaceAlpha,0.25); %设置立方体盒子透明度 hold on;

34、 x0,y0,z0 = sphere; %产生单位球面的网格数据 %产生球心在(30,50,50),半径为30的球面网格数据 x = 30 + 30*x0; y = 50 + 30*y0; z = 50 + 30*z0;,【例2-17】绘制一个透明的立方体盒子,里面放红色、蓝色和黄色三个球。,2020/9/15,%绘制红色球面 h1 = surf(x,y,z,linestyle,none,FaceColor,r,EdgeColor,none); %产生球心在(110,110,50),半径为30的球面网格数据 x = 110 + 30*x0; y = 110 + 30*y0; z = 50 +

35、30*z0; %绘制蓝色球面 h2 = surf(x,y,z,linestyle,none,FaceColor,b,EdgeColor,none); %产生球心在(110,30,50),半径为30的球面网格数据 x = 110 + 30*x0; y = 30 + 30*y0; z = 50 + 30*z0; %绘制黄色球面 h3 = surf(x,y,z,linestyle,none,FaceColor,y,EdgeColor,none); lightangle(45,30); %建立光源并设置光源视角 lighting phong; %设置光照模式 axis equal; %设置坐标轴显示方式 xlabel(X); ylabel(Y); zlabel(Z); %为坐标轴加标签,2020/9/15,2020/9/15,第四节 动画制作,2020/9/15,一、质点运动轨迹动画,comet和comet3函数用来产生质点运动轨迹动画。,comet函数 comet(y) 显示质点绕着向量y的二维动画轨迹 comet(x,y) 显示质点绕着向量y与x的二维动画轨迹 comet(x,y,p) 用输入参

温馨提示

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

最新文档

评论

0/150

提交评论