MATLAB图形绘制.docx

上传人:b****8 文档编号:9923108 上传时间:2023-02-07 格式:DOCX 页数:42 大小:1.98MB
下载 相关 举报
MATLAB图形绘制.docx_第1页
第1页 / 共42页
MATLAB图形绘制.docx_第2页
第2页 / 共42页
MATLAB图形绘制.docx_第3页
第3页 / 共42页
MATLAB图形绘制.docx_第4页
第4页 / 共42页
MATLAB图形绘制.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

MATLAB图形绘制.docx

《MATLAB图形绘制.docx》由会员分享,可在线阅读,更多相关《MATLAB图形绘制.docx(42页珍藏版)》请在冰豆网上搜索。

MATLAB图形绘制.docx

MATLAB图形绘制

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函数用来绘制垂直和水平直方图。

clearall;

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.020.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定义了每个标记的颜色。

loadseamount

scatter(x,y,8,z)

离散点图

14.pie(X)使用X里的数据绘制一张饼图,X里的每一个元素被表示为饼图的一张切片。

pie(X,explode)分离饼图中的某一切片。

x=[4372165];

explode=[0000010];

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');

gridon

双对数刻度曲线

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',[-2020-0.41.2]);

title('Fplotoff(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);

gridon

显示图例

5.创建子图的函数命令subplot

6.用axis函数对图形坐标轴进行处理

x=linspace(0,2*pi,30);

y=sin(x);

z=cos(x);

subplot(221),plot(x,y,x,z);

axisoff;

axis('square','equal');

subplot(222),plot(x,y,x,z);

axisoff;

axis('xy','normal');

subplot(223),plot(x,y,x,z);

axison;

axis('square','equal');

subplot(224),plot(x,y,x,z);

axison;

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);

holdon;

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,[51521],21,[110]);

axis([021021021])

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);

holdon;

surf(X,Y,Z);

colormaphsv;

view(-35,45);

axis([-22-11-0.60.6]);

holdoff

一个函数的法向表面

8.用clinder函数绘制柱面图

t=0:

pi/10:

2*pi;

[X,Y,Z]=cylinder(2+cos(t));

surf(X,Y,Z);

axissquare

母线是曲面的柱面图

9.用bar3函数绘制三维垂直和水平直方图

Y=cool(7);

%Y是由冷色图生成的7X3矩阵

bar3(Y)

三维垂直直方图

3.2MATLAB图形处理

1.meshz可将曲面加上围裙

[x,y,z]=peaks;

meshz(x,y,z);

axis([-infinf-infinf-infinf])

给peaks图加围裙

2.waterfall可在x方向或y方向产生水流效果

[x,y,z]=peaks;

waterfall(x,y,z);

axis([-infinf-infinf-infinf])

Water函数水流效果

3.meshc同时画出网状图与等高线

[x,y,z]=peaks;

meshc(x,y,z);

axis([-infinf-infinf-infinf])

同时画出网状图与等高线

4.surf同时画出曲面图与等高线

[x,y,z]=peaks;

surfc(x,y,z);

axis([-infinf-infinf-infinf])

同时画出曲面图与等高线

5.图形的透视

[X0,Y0,Z0]=sphere(30);%产生单位球面的三维坐标

%产生半径为2的球面的三维坐标

x=2*X0;

y=2*Y0;

z=2*Z0;

clf,surf(X0,Y0,Z0);%画单位球面

shadinginterp;%采用插补明暗处理

holdon

mesh(x,y,z);

colormap(hot);

holdoff;%采用hot色彩

hiddenoff;%产生透视效果

axisequal;

axisoff;%不显示坐标轴

剔透玲珑球

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);

shadinginterp;

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]),lightingflat;

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);

shadinginterp;

colormap(copper);

light('position',[0,15,1]);

lightingphong;

material([0.80.80.5100.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.1surf(X,Y,Z)');

shadingfaceted;

colorbar('horiz'),brighten(0.2);

subplot(122),surf(X,Y,Z,R);

title('NO.2surf(X,Y,Z,R)');

shadingfaceted;

colorbar('horiz');

figure

(2)

subplot(121),surf(X,Y,Z,dzdx);

shadingfaceted;

colorbar('horiz'),brighten(0.1);

title('NO.3surf(X,Y,Z,dzdx)');

subplot(122),surf(X,Y,Z,dzdx);

shadingfaceted;

colorbar('horiz');

title('NO.4surf(X,Y,Z,dzdy)');

figure(3)

subplot(121),surf(X,Y,Z,abs(dzdr));

shadingfaceted;

colorbar('horiz'),brighten(0.6);

title('NO.5surf(X,Y,Z,abs(dzdr))');

subplot(122),surf(X,Y,Z,abs(dz2));

shadingfaceted;

colorbar('horiz');

title('NO.6surf(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');

axissquare;holdon

comet(x,y,0.01);holdoff

彗星状轨迹图

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;%获得单位球坐标

gridon,holdon;

surf(X,Y,Z),shadinginterp;%画地球

x1=-18*R0;X2=6*R0;

y1=-12*R0;y2=12*R0;

z1=-6*R0;z2=6*R0;

%确定坐标范围

view([11737]),comet3(x,y,z,0.02),holdoff

%设视角、画运动线

卫星返回地球轨线示意图

3.图形旋转可以使用rotat

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1