收藏 分销(赏)

MATLAB图形绘制.doc

上传人:天**** 文档编号:4139693 上传时间:2024-07-31 格式:DOC 页数:35 大小:2.01MB 下载积分:12 金币
下载 相关 举报
MATLAB图形绘制.doc_第1页
第1页 / 共35页
MATLAB图形绘制.doc_第2页
第2页 / 共35页


点击查看更多>>
资源描述
MATLAB作为一个强大的绘图工具,有很强的绘图功能,不仅可以绘制普通函数的二维、三维甚至思维图形,而且可以绘制专业图像,如直方图、饼图等。 一、MATLAB二维绘图 MATLAB提供了多个函数用于图形绘制,以矢量或矩阵作为输入参数,主要通过描点法绘图。 1.1 用plot函数绘图 plot函数是MATLAB中最常用的绘图函数,可以用来绘制单条或多条曲线,是MATLAB绘图的基础。 1. 用plot绘制函数y=sin(x)的图形,因为MATLAB是描点法的,因此要将变量离散化。 x=-pi:0.1:pi; y=sin(x); plot(x,y) 正弦函数图形 2. 用plot绘制图形可以通过交换参数位置来交换坐标轴,如绘制的图形, x=-3:0.1:1; y=x.^2+2*x+3; subplot(121),plot(x,y) subplot(122),plot(y,x) 多项式函数在不同坐标系下的图形 3. 绘制多条曲线 x=linspace(0,2*pi,100); plot(x,sin(x),x,cos(x)) plot同时绘制多条曲线 4.改变颜色及图线形态 x=linspace(0,2*pi,100); plot(x,sin(x),'cs',x,cos(x),'g*') 自定义颜色和线型的正余弦函数图形 5. 用axis([xmin,xmax,ymin,ymax])函数确定坐标轴的范围 x=linspace(0,2*pi,100); plot(x,sin(x),'cs',x,cos(x),'g*') axis([0,6.3,-1.2,1.2]) 用axis函数调整过的图形 前面主要讲的是两个函数均为向量的形式,下面介绍一下其他变量的输入形式。 6. plot(x,Y),x为向量,Y为矩阵。如果x的元素个数与Y的列数相等,则采用矩阵Y的列向数据;如果x的元素个数与Y的行数相等,则采用矩阵Y的行向数据;若Y是方阵,则采用列向量数据。 x=1:length(peaks); Y=peaks; plot(x,Y ) 一个向量、一个矩阵作为plot函数的输入参数绘图 7. 输入参数为矩阵时,如plot(Y),如果Y有m行n列,则绘出n个图形。 X=peaks(100); plot(X) 输入参数为矩阵的plot绘图 如果输入参数两个都是矩阵,如plot(X,Y),则绘制X的列向量数据相对的Y的列向量的数据的图形。 8. 当plot的输入参数为一个复矩阵时,则在绘图时相当于使用real和imag函数将复矩阵分离成实部和虚部两个矩阵。 plot(eig(randn(50,50)),'g*','markersize',8) 随机矩阵的特征值 1.2专业二维绘图函数 1. bar和barh函数用来绘制垂直和水平直方图。 clear all; bar (rand(1,10)) Y是向量时的直方图 用来绘制mXn的矩阵的直方图。 x=-2:0.1:2; Y=exp(-x.*x); bar(x,Y) 钟型图 2. 用area函数可以根据矢量或矩阵的各列生产一个区域图 X=magic(5); area(X) 矩阵的区域图 3. 已知资料的误差值,利用errorbar函数来表示 x=linspace(0,2*pi,30); y=sin(x); e=std(y)*ones(size(x)) %标准差 errorbar(x,y,e) 误差的区域范围 4. 对于变化剧烈的函数,可用fplot来进行较精确的绘图,该函数对剧烈变化处进行较密集的取样。 x=0.02:0.001:0.2; subplot(121),plot(x,sin(1./x)) subplot(122),fplot('sin(1/x)',[0.02 0.2]) 用fplot精确绘图与plot绘图比较 5. 用polar函数产生极坐标图 theta=linspace(0,2*pi); r=cos(4*theta); polar(theta,r) 极坐标图 6. 对于大量的资料,用hist函数来显示资料数据的分部情况 x=-3:0.1:3; y=randn(1000,1); hist(y,x) 频数累计柱状图 7. rose和hist很接近,只不过rose是将资料大小视为角度,资料个数视为距离,并用极坐标绘制表示。 x=randn(1000,1); rose(x) 极坐标中的频数累计直方图 8. stairs函数可画出阶梯图 x=linspace(0,10,50); y=sin(x).*exp(-x/3); stairs(x,y) 阶梯图 9. stem可产生针状图,常用来绘制数位信号 x=linspace(0,10,50); y=sin(x).*exp(-x/3); stem(x,y) 针状图 10. fill函数将资料点视为多边形顶点,并将此多边形涂上颜色。 x=linspace(0,10,50); y=sin(x).*exp(-x/3); fill(x,y,'b') 填充图 11. feather将每一个资料点视为复数,并以箭头号画出 theta=linspace(0,2*pi,20); z=cos(theta)+i*sin(theta); feather(z) 羽毛图 12. compas和feather很接近,只是每个箭头号的起点都在圆内 theta=linspace(0,2*pi,20); z=cos(theta)+i*sin(theta); compass(z) 罗盘图 13. scatter(X,Y,S,C)在向量X、Y定义的位置绘制彩色的圆圈标志(X、Y必须大小相同),S定义了每个符号的大小,C定义了每个标记的颜色。 load seamount scatter(x,y,8,z) 离散点图 14. pie(X)使用X里的数据绘制一张饼图,X里的每一个元素被表示为饼图的一张切片。pie(X,explode)分离饼图中的某一切片。 x=[4 3 7 2 1 6 5]; explode=[0 0 0 0 0 1 0]; pie(x,explode) 饼图 15. quiver用来绘制向量图 [X,Y]=meshgrid(-2:0.2:2); Z=X.*exp(-X.^2-Y.^2); [DX,DY]=gradient(Z,2,2); quiver(X,Y,DX,DY) 函数梯度图 16. 凸壳图常用命令K=conhull(x,y) xx=-1:0.04:1; yy=abs(sqrt(xx)); [x,y]=pol2cart(xx,yy); k=convhull(x,y); plot(x(k),y(k),'r-',x,y,'g*') 凸壳图 二、MATLAB其他基本函数与基本图形处理 2.1 其他基本函数 1. loglog、semilog和semilogy三个函数的用法同plot,只是Y轴的刻度有所不同。 x=logspace(-1,1); loglog(x,exp(x),'o'); grid on 双对数刻度曲线 x=logspace(-1,0); y=exp(x); subplot(121),semilogx(x,y,'b*'); subplot(122),semilogy(x,y,'g+') 半对数刻度曲线图 2. plotyy可以产生两个y轴,在同一个图中绘制两组不同的数据,或指定一种数据的两种不同显示形式。 t=0:pi/20:6; y=exp(sin(t)); plotyy(t,y,t,y,'plot','stem') 同一数据的不同图形显示形式 t=0:900;A=1000;a=0.005;b=0.005; z1=A*exp(-a*t); z2=sin(b*t); plotyy(t,z1,t,z2,'semilogy','plot') 用两种不同类型的Y轴绘图比较 2.2 图形标注及简单处理 1. xlabel、ylabel、title标注 fplot('sin(x)./x',[-20 20 -0.4 1.2]); title('Fplot of f(x)=sin(x)/x'); xlabel('x'),ylabel('f(x)') 对x、y轴及全图加注说明 2. 用函数text可以将文本字符串放置在图形中的任意位置,放置字符串的位置可以用图形上的点来表示。 x=0:pi/100:6; plot(x,sin(x)); text(3*pi/4,sin(3*pi/4),'\leftarrowsin(x)=0.707','fontsize',14); text(pi,sin(pi),'\leftarrowsin(x)=0','fontsize',14); text(5*pi/4,sin(5*pi/4),'sin(x)=-0.707\rightarrow','horizontal','right','fontsize',14); 在图形中添加文本标注 \leftarrow用来显示向左的箭头,horizontal用来指定水平的对齐方式,right用于指定右对齐,默认的对齐方式为左对齐。垂直对齐方式为居中对齐。 3. 使用函数gtext可以将一个字符串放到图形中,位置由鼠标来确定。 plot(peaks(80)); gtext('多么优美的图形','fontsize',16) 使用函数gtext添加文本标注 4. 使用函数legend可以在图形中添加图例,不同图例的线型及颜色自动生成,可以对不同图形在图例中加以说明。 x=magic(3);bar(x); legend('第一列','第二列','第三列',2); grid on 显示图例 5. 创建子图的函数命令subplot 6. 用axis函数对图形坐标轴进行处理 x=linspace(0,2*pi,30); y=sin(x); z=cos(x); subplot(221),plot(x,y,x,z); axis off; axis('square','equal'); subplot(222),plot(x,y,x,z); axis off; axis('xy','normal'); subplot(223),plot(x,y,x,z); axis on; axis('square','equal'); subplot(224),plot(x,y,x,z); axis on; axis('xy','normal'); 用axis函数对图形坐标轴进行处理 三、MATLAB三维绘图 3.1 基本三维绘图 1.plot3函数用来画一个三维的曲线 t=0:pi/50:10*pi; plot3(sin(t),cos(t),t); title('Helix'); xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t'); axis('ij'); % 注意图的y轴及曲线方向改变了 绘制三维线图 同时画出两条三维空间中的曲线 t=linspace(0,10*pi,501); plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t) 同时画出两条三维空间中的曲线 形状酷似一条夺目的宝石项链 宝石项链 2. mesh也是三维空间立体绘图的基本命令。可画出立体网状图,其产生的图形都会依高度而有不同颜色。 x=linspace(-1,1,25); %在x轴上取25点 y=linspace(-1,1,25); %在y轴上取25点 [xx,yy]=meshgrid(x,y);%xx和yy都是21X21的矩阵 zz=xx.*exp(-xx.^2-yy.^2); %计算函数值,zz也是21X21的矩阵 mesh(xx,yy,zz);%画出立体网状图 绘制立体网状图 3. MATLAB中以meshgrid配合mesh或surf指令来绘制一个三维的曲面 x=-7.5:0.5:7.5; y=x; % 先产生x及y二个阵列 [X,Y]=meshgrid(x,y); % 再以meshgrid形成二维的网格数据 R=sqrt(X.^2+Y.^2)+eps; %eps浮点相对精度 %加上eps可避免当R在分母趋近零时无法定义 Z=sin(R)./R; %产生z轴的数据 surf(X,Y,Z) % 将z轴的变化值以曲面方式画出 绘制立体曲面图 用曲面图表示函数 clf; x=-4:4; y=x; [X,Y]=meshgrid(x,y); %生成x-y坐标格点矩阵 Z=X.^2+Y.^2; %计算格点上的函数值 surf(X,Y,Z); hold on; colormap(hot); %颜色控制 stem3(X,Y,Z,'bo'); %用来表现在格点上计算函数值 函数图 4. MATLAB用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函数 5. 等值线图的相关指令为contour、coutour3。 [X,Y,Z]=peaks; %x,y及z轴的数据由peaks函数定义 subplot(221),contour(Z,20) % 画出peaks的z轴二维等值线图,20为等值线的数目 subplot(222),contour(X,Y,Z,20); %画出peaks的二维等值线图,20为等值线的数目,注意x,y轴与上图不同 subplot(223),contour3(Z,20); % 画出peaks的z轴三维等值线图 subplot(224),contour3(X,Y,Z,20); %画出peaks的三维等值线图,注意x,y轴与上图不同 Contour、contour3绘图比较 6. slice函数用来绘制立体空间的正交切片图 [x,y,z]=meshgrid(-2:.2:2,-2:.2:2,-2:.2:2); v=x.*exp(-x.^2-y.^2-z.^2); slice(v,[5 15 21],21,[1 10]); axis([0 21 0 21 0 21]) colormap(jet) 切片图 7. 用quiver3函数绘制三维向量场图 [X,Y]=meshgrid(-2:0.25:2,-1:0.2:1); Z=X.*exp(-X.^2-Y.^2); [U,V,W]=surfnorm(X,Y,Z);%空间表面的法线 quiver3(X,Y,Z,U,V,W,0.5); hold on; surf(X,Y,Z); colormap hsv; view(-35,45); axis([-2 2 -1 1 -0.6 0.6]); hold off 一个函数的法向表面 8. 用clinder函数绘制柱面图 t=0:pi/10:2*pi; [X,Y,Z]=cylinder(2+cos(t)); surf(X,Y,Z); axis square 母线是曲面的柱面图 9. 用bar3函数绘制三维垂直和水平直方图 Y=cool(7); %Y是由冷色图生成的7X3矩阵 bar3(Y) 三维垂直直方图 3.2 MATLAB图形处理 1. meshz可将曲面加上围裙 [x,y,z]=peaks; meshz(x,y,z); axis([-inf inf -inf inf -inf inf]) 给peaks图加围裙 2. waterfall可在x方向或y方向产生水流效果 [x,y,z]=peaks; waterfall(x,y,z); axis([-inf inf -inf inf -inf inf]) Water函数水流效果 3. meshc同时画出网状图与等高线 [x,y,z]=peaks; meshc(x,y,z); axis([-inf inf -inf inf -inf inf]) 同时画出网状图与等高线 4. surf同时画出曲面图与等高线 [x,y,z]=peaks; surfc(x,y,z); axis([-inf inf -inf inf -inf inf]) 同时画出曲面图与等高线 5. 图形的透视 [X0,Y0,Z0]=sphere(30);%产生单位球面的三维坐标 %产生半径为2的球面的三维坐标 x=2*X0; y=2*Y0; z=2*Z0; clf,surf(X0,Y0,Z0);%画单位球面 shading interp; %采用插补明暗处理 hold on mesh(x,y,z); colormap(hot); hold off; %采用hot色彩 hidden off; %产生透视效果 axis equal; axis off; %不显示坐标轴 剔透玲珑球 6. 图形的剪切。利用“非数”NaN,对图形进行裁切处理。 clf; t=linspace(0,2*pi,100); r=1-exp(-t/2).*cos(4*t); %旋转母线 [X,Y,Z]=cylinder(r,60); %产生旋转柱面数据 ii=find(X<0&Y<0); %确定x-y平面第四象限上的数据下标 Z(ii)=NaN; %剪切 surf(X,Y,Z); colormap(spring); shading interp; light('position',[-3,-1,3],'style','local'); %设置光源 material([0.5,0.4,0.3,10,0.3]); %设置表面反射 剪切四分之一后的图形 7. 图形的镂空。利用“非数”NaN,对图形进行裁切处理。 P=peaks(30); P(18:20,9:15)=NaN; %镂空 surfc(P); colormap(summer); light('position',[50,-10,5]),lighting flat; material([0.9,0.9,0.6,15,0.4]); 镂方孔的曲面 8. 图形的裁切 clf,x=[-8:0.2:8]; y=x; [X,Y]=meshgrid(x,y); ZZ=X.^2-Y.^2; ii=find(abs(X)>6|abs(Y)>6); %确定超出[-6,6]范围的格点下标 ZZ(ii)=zeros(size(ii)); %强制为0 surf(X,Y,ZZ); shading interp; colormap(copper); light('position',[0,15,1]); lighting phong; material([0.8 0.8 0.5 10 0.5]) 经裁切处理后的图形 9. 用色彩表现函数的特征,即图形的思维表示。当三维网线图、曲面图的第四个输入参数取一些特殊矩阵时,色彩就能表现或加强函数的某个特征,如梯度、曲率、方向导数等。 x=3*pi*(-1:1/15:1); y=x; [X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; [dzdx,dzdy]=gradient(Z); dzdr=sqrt(dzdx.^2+dzdy.^2); %计算对r的导数 dz2=del2(Z); %计算曲率 subplot(121),surf(X,Y,Z); title('NO.1 surf(X,Y,Z)'); shading faceted; colorbar('horiz'),brighten(0.2); subplot(122),surf(X,Y,Z,R); title('NO.2 surf(X,Y,Z,R)'); shading faceted; colorbar('horiz'); figure(2) subplot(121),surf(X,Y,Z,dzdx); shading faceted; colorbar('horiz'),brighten(0.1); title('NO.3 surf(X,Y,Z,dzdx)'); subplot(122),surf(X,Y,Z,dzdx); shading faceted; colorbar('horiz'); title('NO.4 surf(X,Y,Z,dzdy)'); figure(3) subplot(121),surf(X,Y,Z,abs(dzdr)); shading faceted; colorbar('horiz'),brighten(0.6); title('NO.5 surf(X,Y,Z,abs(dzdr))'); subplot(122),surf(X,Y,Z,abs(dz2)); shading faceted; colorbar('horiz'); title('NO.6 surf(X,Y,Z,abs(dz2))'); 色彩分别表现函数的高度和半径特征 色彩分别表示函数的x方向和y方向导数特征 色彩分别表示函数的径向导数和曲率特征 3.3 动态图形的制作 1. 彗星状轨迹图 shg;n=10; t=n*pi*(0:0.0005:1); x=sin(t);y=cos(t); plot(x,y,'g'); axis square;hold on comet(x,y,0.01);hold off 彗星状轨迹图 2.卫星返回地球的运动轨迹 shg;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; %确定坐标范围 view ([117 37]),comet3(x,y,z,0.02),hold off %设视角、画运动线 卫星返回地球轨线示意图 3.图形旋转可以使用rotate函数 shg;clf; [X,Y]=meshgrid([-2:.2:2]); Z=4*X.*exp(-X.^2-Y.^2); G=gradient(Z); subplot(121),surf(X,Y,Z,G); subplot(122),h=surf(X,Y,Z,G); rotate(h,[-2,-2,0],30,[2,2,0]),colormap(jet) 图形对象的旋转 35
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服