Matlab绘图-很详细,很全面(2)

2019-08-17 12:58

一般情况下,每执行一次绘图命令,就刷新一次当前图形窗口,图形窗口原有图形将不复存在,如果希望在已经存在的图形上再继续添加新的图形,可以使用图形保持命令hold。hold on/off 命令是保持原有图形还是刷新原有图形,不带参数的hold命令在两者之间进行切换。 例:(略) 4. 图形窗口分割

在实际应用中,经常需要在一个图形窗口中绘制若干个独立的图形,这就需要对图形窗口进行分割。分割后的图形窗口由若干个绘图区组成,每一个绘图区可以建立独立的坐标系并绘制图形。同一图形窗口下的不同图形称为子图。Matlab提供了subplot函数用来将当前窗口分割成若干个绘图区,每个区域代表一个独立的子图,也是一个独立的坐标系,可以通过subplot函数激活某一区,该区为活动区,所发出的绘图命令都是作用于该活动区域。调用格式:

subplot(m,n,p)

该函数把当前窗口分成m×n个绘图区,m行,每行n个绘图区,区号按行优先编号。其中第p个区为当前活动区。每一个绘图区允许以不同的坐标系单独绘制图形。 例:(略)

三.绘制二维图形的其他函数 1. 其他形式的线性直角坐标图

在线性直角坐标中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别为:

bar(x,y,选项) 选项在单引号中 stairs(x,y,选项) stem(x,y,选项)

fill(x1,y1,选项1,x2,y2,选项2,…)

前三个函数和plot的用法相似,只是没有多输入变量形式。fill函数按向量元素下标渐增次序依次用直线段连接x,y对应元素定义的数据点。

例5-8:分别以条形图、填充图、阶梯图和杆图形式绘制曲线 x=0:0.35:7; y=2*exp(-0.5*x);

subplot(2,2,1);bar(x,y,'g'); title('bar(x,y,''g'')');axis([0, 7, 0 ,2]); subplot(2,2,2);fill(x,y,'r');

title('fill(x,y,''r'')');axis([0, 7, 0 ,2]); subplot(2,2,3);stairs(x,y,'b'); title('stairs(x,y,''b'')');axis([0, 7, 0 ,2]); subplot(2,2,4);stem(x,y,'k'); title('stem(x,y,''k'')');axis([0, 7, 0 ,2]);

2. 极坐标图

polar函数用来绘制极坐标图,调用格式为: polar(theta,rho,选项)

其中,theta为极坐标极角,rho为极径,选项的内容和plot函数相似。 例5-9:绘制 的极坐标图

theta=0:0.01:2*pi;

rho=sin(3*theta).*cos(5*theta); polar(theta,rho,'r'); 3. 对数坐标图

在实际应用中,经常用到对数坐标,Matlab提供了绘制对数和半对数坐标曲线的函数,其调用格式为:

semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…)

这些函数中选项的定义和plot函数完全一样,所不同的是坐标轴的选取。semilogx函数使用半对数坐标,x轴为常用对数刻度,而y轴仍保持线性刻度。semilogy恰好和semilogx相反。loglog函数使用全对数坐标,x、y轴均采用对数刻度。 例:略

4. 对函数自适应采样的绘图函数 5. 其他形式的二维图形

二. 三维绘图

一.绘制三维曲线的基本函数

最基本的三维图形函数为plot3,它将二维绘图函数plot的有关功能扩展到三维空间,可以用来绘制三维曲线。其调用格式为:

plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…)

其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot的选项一样。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵的列数。 例513 绘制空间曲线 该曲线对应的参数方程为 t=0:pi/50:2*pi; x=8*cos(t); y=4*sqrt(2)*sin(t); z=-4*sqrt(2)*sin(t); plot3(x,y,z,'p');

title('Line in 3-D Space'); text(0,0,0,'origin');

xlabel('X');ylabel('Y');zlabel('Z');grid;

二.三维曲面

1.平面网格坐标矩阵的生成

当绘制z=f(x,y)所代表的三维曲面图时,先要在xy平面选定一矩形区域,假定矩形区域为D=[a,b]×[c,d],然后将[a,b]在x方向分成m份,将[c,d]在y方向分成n份,由各划分点做平行轴的直线,把区域D分成m×n个小矩形。生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数绘图。

产生平面区域内的网格坐标矩阵有两种方法: 利用矩阵运算生成。 x=a:dx:b; y=(c:dy:d)’; X=ones(size(y))*x; Y=y*ones(size(x));

经过上述语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素个数,矩阵Y的每一列都是向量y,列数等于向量x的元素个数。

利用meshgrid函数生成; x=a:dx:b; y=c:dy:d;

[X,Y]=meshgrid(x,y);

语句执行后,所得到的网格坐标矩阵和上法,相同,当x=y时,可以写成meshgrid(x) 2.绘制三维曲面的函数

Matlab提供了mesh函数和surf函数来绘制三维曲面图。mesh函数用来绘制三维网格图,而surf用来绘制三维曲面图,各线条之间的补面用颜色填充。其调用格式为: mesh(x,y,z,c) surf(x,y,z,c)

一般情况下,x,y,z是维数相同的矩阵,x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。c省略时,Matlab认为c=z,也即颜色的设定是正比于图形的高度的。这样就可以得到层次分明的三维图形。当x,y省略时,把z矩阵的列下标当作x轴的坐标,把z矩阵的行下标当作y轴的坐标,然后绘制三维图形。当x,y是向量时,要求x的长度必须等于z矩阵的列,y的长度必须等于必须等于z的行,x,y向量元素的组合构成网格点的x,y坐标,z坐标则取自z矩阵,然后绘制三维曲线。 例515 用三维曲面图表现函数 :

为了便于分析三维曲面的各种特征,下面画出3种不同形式的曲面。 %program 1 x=0:0.1:2*pi; [x,y]=meshgrid(x); z=sin(y).*cos(x); mesh(x,y,z);

xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis'); title('mesh'); pause; %program 2 x=0:0.1:2*pi; [x,y]=meshgrid(x); z=sin(y).*cos(x); surf(x,y,z);

xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');

title('surf'); pause; %program 3 x=0:0.1:2*pi; [x,y]=meshgrid(x); z=sin(y).*cos(x); plot3(x,y,z);

xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis'); title('plot3-1');grid;

程序执行结果分别如上图所示。从图中可以发现,网格图(mesh)中线条有颜色,线条间补面无颜色。曲面图(surf)的线条都是黑色的,线条间补面有颜色。进一步观察,曲面图补面颜色和网格图线条颜色都是沿z轴变化的。用plot3 绘制的三维曲面实际上由三维曲线组合而成。可以分析plot(x’,y’,z’)所绘制的曲面的特征。 例516 绘制两个直径相等的圆管相交的图形。 m=30; z=1.2*(0:m)/m; r=ones(size(z)); theta=(0:m)/m*2*pi;

x1=r'*cos(theta);y1=r'*sin(theta);%生成第一个圆管的坐标矩阵 z1=z'*ones(1,m+1); x=(-m:2:m)/m;

x2=x'*ones(1,m+1);y2=r'*cos(theta);%生成第一个圆管的坐标矩阵 z2=r'*sin(theta);

surf(x1,y1,z1); %绘制竖立的圆管 axis equal ,axis off hold on

surf(x2,y2,z2); %绘制平放的圆管 axis equal ,axis off


Matlab绘图-很详细,很全面(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011年农机化工作会议讲话(修改稿)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: