matlab 图形绘制,MatLab图形绘制功能

本文详细介绍了MATLAB的图形绘制功能,包括2D图形如函数曲线、误差棒图、直方图、极坐标图等,以及3D图形如网格图、曲面图、瀑布图等。此外,还讲解了如何使用如`plot`、`fplot`、`polar`、`surf`等函数进行图形绘制,以及如何调整坐标轴范围、添加注解和实现动画效果。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gifMatLab图形绘制功能

MatLab % 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 ) 若要同时改变颜色及图线型态(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的指令可以用来自动的画一个已定义的函数分布图,而无须产生绘图所须要的一组数据做为变数。其语法为fplot( fun ,[xmin xmax ymin ymax]),其中 fun为一已定义的函数名称,例如 sin, cos等等;而 xmin, xmax, ymin, ymax 则是设定绘图横轴及纵轴的下限及上限。 以下的例子是将一函数 f(x)=sin(x)/x 在-20 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( 椭圆 ) 图形窗口的分割一般用命令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); 如果已知资料的误差量,就可用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); 对於大量的资料,我们可用hist来显示资料的分 情况和统计特性。下面几个命令可用来验证randn产生的高斯乱数分 : x=randn(5000, 1); % 产生5000个 m=0,s=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=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*sin(theta); compass(z); 二、 三维立体图形 三维绘图函数 contour 二维等值线图,即从上向下看contour3等值线图 contour3 等值线图 fill3 填充的多边形 mesh 网格图 meshc 具有基本等值线图的网格图 meshz 有零平面的网格图 pcolor 二维伪彩色绘图,即从上向下看surf图 plot3 直线图 quiver 二维带方向箭头的速度图 surf 曲面图 surfc 具有基本等值线图的曲面图 surfl 带亮度的曲面图 waterfall 无交叉线的网格图 三维绘图工具 axis 修正坐标轴属性 clf 清除图形窗口 clabel 放置等值线标签 close 关闭图形窗口 figure 创建或选择图形窗口 getframe 捕捉动画桢 grid 放置网格 griddata 对画图用的数据进行内插 hidden 隐蔽网格图线条 hold 保留当前图形 meshgrid 产生三维绘图数据 movie 放动画 moviein 创建桢矩阵,存储动画 shading 在曲面图和伪彩色图中用分块、平滑和插值加阴影 subplot 在图形窗口内画子图 text 在指定的位置放文本 title 放置标题 view 改变图形的视角 xlabel 放置x轴标记 ylabel 放置y轴标记 zlabel 放置z轴标记 函数view view(az,el) 设置视图的方位角az和仰角el view([az,el]) view([x,y,z]) 在笛卡儿坐标系中沿向量[x,y,z]正视原点设置视图,例如view([0 0 1])=view(0,90) view(2) 设置缺省的二维视图,az=0,el=90 view(3) 设置缺省的三维视图,az=-37.5,el=30 [az,el]=view 返回当前的方位角az和仰角el view(T) 用一个4×4的转置矩阵T来设置视图 T=view 返回当前的4×4转置矩阵 plot3命令将绘制二维图形的函数plot的特性扩展到三维空间图形。函数格式除了包括第三维的信息(比如Z方向)之外,与二维函数plot相同。plot3一般语法调用格式是plot3(x,y,z,S),这里x,y和z是向量或矩阵,S是可选的字符串,用来指定颜色、标记符号和/或线形(s可以省略)。 三维螺旋线例子: t=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); 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); 利用在x-y平面的矩形网格点上的z轴坐标值,MATLAB定义了一个网格曲面。MATLAB通过将邻接的点用直线连接起来形成网状曲面,其结果好象在数据点有结点的鱼网。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); % 计算函数值,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); % 计算函数值,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,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,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);hold 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(a^2-b^2);%地球与另一焦点的距离 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 卫星返回地球轨线示意

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值