1、MatLab图形绘制功能 MatLab & 数学建模 授课: 唐 静 波 (九江学院理学院) 第二讲 MatLab图形绘制功能一、 二维平面图形基本绘图函数命 令含 义plot建立向量或矩阵各队队向量的图形loglogx、y轴都取对数标度建立图形semilogxx轴用于对数标度,y轴线性标度绘制图形semilogyy轴用于对数标度,x轴线性标度绘制图形title给图形加标题xlabel给x轴加标记ylabel给y轴加标记text在图形指定的位置上加文本字符串gtext在鼠标的位置上加文本字符串grid打开网格线plot绘图函数的叁数 字元 颜色字元 图线型态y 黄色. 点k 黑色o 圆w 白色
2、x xb 蓝色+ +g 绿色* *r 红色- 实线c 亮青色: 点线m 锰紫色-. 点虚线- 虚线 hold on 命令用于在已画好的图形上添加新的图形plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y座标。下例可画出一条正弦曲线: x=0:0.001:10; % 0到10的1000个点的x座标y=sin(x); % 对应的y座标plot(x,y); % 绘图Y=sin(10*x);plot(x,y,r:,x,Y,b) % 同时画两个函数 若要改变颜色,在座标对後面加上相关字串即可: x=0:0.01:10; plot(x,sin(x),r) 若要同时改变颜
3、色及图线型态(Line style),也是在坐标对後面加上相关字串即可:plot(x,sin(x),r*)用axis(xmin,xmax,ymin,ymax)函数来调整图轴的范围axis(0,6,-1.5,1)MATLAB也可对图形加上各种注解与处理:xlabel(x轴); % x轴注解 ylabel(y轴); % y轴注解 title(余弦函数); % 图形标题 legend(y = cos(x); % 图形注解 gtext(y = cos(x); % 图形注解 ,用鼠标定位注解位置grid on; % 显示格线 fplot的指令可以用来自动的画一个已定义的函数分布图,而无须产生绘图所须要的
4、一组数据做为变数。其语法为fplot(fun,xmin xmax ymin ymax),其中 fun为一已定义的函数名称,例如 sin, cos等等;而 xmin, xmax, ymin, ymax 则是设定绘图横轴及纵轴的下限及上限。以下的例子是将一函数 f(x)=sin(x)/x 在-20x20,-0.4y fplot(sin(x)./x,-20 20 -0.4 1.2) 【例】画椭圆a = 0:pi/50:2*pi; %角度X = cos(a)*3; %参数方程Y = sin(a)*2; plot(X,Y);xlabel(x), ylabel(y);title(椭圆) 图形窗口的分割一般
5、用命令subplot:subplot(2,2,1);subplot(2,3,4);MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。 小整理:其他各种二维绘图函数 bar 长条图errorbar 图形加上误差范围 fplot 较精确的函数图形 polar 极座标图hist 累计图rose 极座标累计图stairs 阶梯图stem 针状图fill 实心图feather 羽毛图compass 罗盘图quiver 向量场图当资料点数量不多时,长条图是很适合的表示方式: close all; % 关闭所有的图形视窗 x=1:10; y=rand(size(x); bar(x,y); 如
6、果已知资料的误差量,就可用errorbar来表示。下例以单位标准差来做资料的误差量: x = linspace(0,2*pi,30); y = sin(x); e = std(y)*ones(size(x); errorbar(x,y,e) 对於变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样,如下例: fplot(sin(1/x), 0.02 0.2); % 0.02 0.2是绘图范围 若要产生极座标图形,可用polar: theta=linspace(0, 2*pi); r=cos(4*theta); polar(theta, r); 对於大量的资料,我们可
7、用hist来显示资料的分情况和统计特性。下面几个命令可用来验证randn产生的高斯乱数分: x=randn(5000, 1); % 产生5000个 =0,=1 的高斯乱数 hist(x,20); % 20代表长条的个数 rose和hist很接近,只不过是将资料大小视为角度,资料个数视为距离,并用极座标绘制表示: x=randn(1000, 1); rose(x); stairs可画出阶梯图: x=linspace(0,10,50); y=sin(x).*exp(-x/3); stairs(x,y); stems可产生针状图,常被用来绘制数位讯号: x=linspace(0,10,50); y=
8、sin(x).*exp(-x/3); stem(x,y); stairs将资料点视为多边行顶点,并将此多边行涂上颜色: x=linspace(0,10,50); y=sin(x).*exp(-x/3); fill(x,y,b); % b为蓝色 feather将每一个资料点视复数,并以箭号画出: theta=linspace(0, 2*pi, 20); z = cos(theta)+i*sin(theta); feather(z); compass和feather很接近,只是每个箭号的起点都在圆点: theta=linspace(0, 2*pi, 20); z = cos(theta)+i*si
9、n(theta); compass(z); 二、 三维立体图形三维绘图函数contour二维等值线图,即从上向下看contour3等值线图contour3等值线图fill3填充的多边形mesh网格图meshc具有基本等值线图的网格图meshz有零平面的网格图pcolor二维伪彩色绘图,即从上向下看surf图plot3直线图quiver二维带方向箭头的速度图surf曲面图surfc具有基本等值线图的曲面图surfl带亮度的曲面图waterfall无交叉线的网格图 三维绘图工具axis修正坐标轴属性clf清除图形窗口clabel放置等值线标签close关闭图形窗口figure创建或选择图形窗口ge
10、tframe捕捉动画桢grid放置网格griddata对画图用的数据进行内插hidden隐蔽网格图线条hold保留当前图形meshgrid产生三维绘图数据movie放动画moviein创建桢矩阵,存储动画shading在曲面图和伪彩色图中用分块、平滑和插值加阴影subplot在图形窗口内画子图text在指定的位置放文本title放置标题view改变图形的视角xlabel放置x轴标记ylabel放置y轴标记zlabel放置z轴标记函数viewview(az,el)设置视图的方位角az和仰角elview(az,el)view(x,y,z)在笛卡儿坐标系中沿向量x,y,z正视原点设置视图,例如vie
11、w(0 0 1)=view(0,90)view(2)设置缺省的二维视图,az=0,el=90view(3)设置缺省的三维视图,az=-37.5,el=30az,el=view返回当前的方位角az和仰角elview(T)用一个44的转置矩阵T来设置视图T=view返回当前的44转置矩阵 plot3命令将绘制二维图形的函数plot的特性扩展到三维空间图形。函数格式除了包括第三维的信息(比如Z方向)之外,与二维函数plot相同。plot3一般语法调用格式是plot3(x,y,z,S),这里x,y和z是向量或矩阵,S是可选的字符串,用来指定颜色、标记符号和/或线形(s可以省略)。 三维螺旋线例子: t
12、=0:pi/50:10*pi; plot3(sin(t),cos(t),t) grid %添加网格plot3可画出空间中的曲线: t=linspace(0,20*pi, 501); plot3(t.*sin(t), t.*cos(t), t); %注意用点乘 .*亦可同时画出两条空间中的曲线:t=linspace(0, 10*pi, 501); plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t); 正弦曲线图 x=linspace(0,3*pi); % 0到 3pi 间100个数据点 z1=sin(x); z2=sin(2*x);
13、z3=sin(3*x); y1=zeros(100); % 含有100个数据的 0数组 y3=zeros(100); y2=y3/2; plot3(x,y1,z1,x,y2,z2,x,y3,z3);利用在xy平面的矩形网格点上的z轴坐标值,MATLAB定义了一个网格曲面。MATLAB通过将邻接的点用直线连接起来形成网状曲面,其结果好象在数据点有结点的鱼网。mesh可画出立体网状图.画出由函数形成的立体网状图: x=linspace(-2, 2, 25); % 在x轴上取25点 y=linspace(-2, 2, 25); % 在y轴上取25点 xx,yy=meshgrid(x, y); % x
14、x和yy都是21x21的矩阵 zz=xx.*exp(-xx.2-yy.2); % 计算函数值,zz也是21x21的矩阵 mesh(xx, yy, zz); % 画出立体网状图 曲面图,除了各线条之间的空档(称作补片)用颜色填充以外,和网格图看起来是一样的。这种图一般使用函数surf来绘制。surf和mesh的用法类似: x=linspace(-2, 2, 25); % 在x轴上取25点 y=linspace(-2, 2, 25); % 在y轴上取25点 xx,yy=meshgrid(x, y); % xx和yy都是21x21的矩阵 zz=xx.*exp(-xx.2-yy.2); % 计算函数值
15、,zz也是21x21的矩阵 surf(xx, yy, zz); % 画出立体曲面图 MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为: 要画出此函数的最快方法即是直接键入peaks: peaks z = 3*(1-x).2.*exp(-(x.2) - (y+1).2) . - 10*(x/5 - x.3 - y.5).*exp(-x.2-y.2) . - 1/3*exp(-(x+1).2 - y.2) 我们亦可对peaks函数取点,再以各种不同方法进行绘图。meshz可将曲面加上围裙: x,y,z=peaks; meshz(x,y
16、,z); waterfall可在x方向或y方向产生水流效果: x,y,z=peaks; waterfall(x,y,z); 下列命令产生在y方向的水流效果: x,y,z=peaks; waterfall(x,y,z); meshc同时画出网状图与等高线: x,y,z=peaks; meshc(x,y,z); surfc同时画出曲面图与等高线: x,y,z=peaks; surfc(x,y,z); contour3画出曲面在三度空间中的等高线: contour3(peaks, 20); contour画出曲面等高线在XY平面的投影: contour(peaks, 20); 剔透玲珑球X0,Y0,
17、Z0=sphere(30); %产生单位球面的三维坐标X=2*X0;Y=2*Y0;Z=2*Z0; %产生半径为2的球面的三维坐标surf(X0,Y0,Z0); %画单位球面shading interp %采用插补明暗处理hold on; mesh(X,Y,Z);hold off %画外球面hidden off %产生透视效果axis off %不显示坐标轴动态图形动画效果 彗星状轨迹图【*例】简单二维示例。(请指令窗中运行以下指令)n=10;t=n*pi*(0:0.0005:1);x=sin(t);y=cos(t);plot(x,y,g); hold on;comet(x,y,0.02);ho
18、ld off【*例】卫星返回地球的运动轨线示意。R0=1; %以地球半径为一个单位a=12*R0;b=9*R0;T0=2*pi; %T0是轨道周期T=5*T0;dt=pi/100;t=0:dt:T;f=sqrt(a2-b2); %地球与另一焦点的距离th=12.5*pi/180; %卫星轨道与x-y平面的倾角E=exp(-t/20); %轨道收缩率x=E.*(a*cos(t)-f);y=E.*(b*cos(th)*sin(t);z=E.*(b*sin(th)*sin(t);plot3(x,y,z,g) %画全程轨线X,Y,Z=sphere(30);X=R0*X;Y=R0*Y;Z=R0*Z; %获得单位球坐标grid on,hold on,surf(X,Y,Z),shading interp %画地球x1=-18*R0;x2=6*R0;y1=-12*R0;y2=12*R0;z1=-6*R0;z2=6*R0;axis(x1 x2 y1 y2 z1 z2) %确定坐标范围view(117 37),comet3(x,y,z,0.02),hold off %设视角、画运动轨线 图 7.4.3.1-1 卫星返回地球轨线示意
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1