matlab plot 横坐标如何让横坐标显示自己定义的向量

博客访问: 359997
博文数量: 87
博客积分: 1437
博客等级: 上尉
技术积分: 810
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: WINDOWS
第五讲计算结果的可视化
本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。
5.1 二维平面图形
5.1.1 基本图形函数
plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是
说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:
(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制
曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲
当x 为m× n 矩阵时,就由n 条曲线。
(2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。
(3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,… 元素为纵坐标值绘
制多条曲线。
例5.1.1 画出一条正弦曲线和一条余弦曲线。
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,x,y2)
图5.1.1 函数plot 绘制的正弦曲线
在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MATLAB 软件专
门提供了这方面的参数选项(见表5.1.1),我们只要在每个坐标后加上相关字符串,就可
现它们的功能。
表5.1.1 绘图参数表
色彩字符颜色线型字符线型格式标记符号数据点形式标记符号数据点形式
y 黄- 实线. 点< 小于号
m 紫: 点线o 圆s 正方形
c 青-. 点划线x 叉号d 菱形
r 红- - 虚线+ 加号h 六角星
g 绿* 星号p 五角星
b 蓝v 向下三角形
w 白^ 向上三角形
k 黑> 大于号
例如,在上例中输入
>> plot(x,y1,'r+-',x,y2,'k*:')
则得图5.1.2
图5.1.2 使用不同标记的plot 函数绘制的正弦曲线
5.1.2 图形修饰
MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。
表5.1.2 图形修饰函数表
grid on (/off) 给当前图形标记添加(取消)网络
xlable(‘string’) 标记横坐标
ylabel(‘string’) 标记纵坐标
title(‘string’) 给图形添加标题
text(x,y,’string’) 在图形的任意位置增加说明性文本信息
gtext(‘string’) 利用鼠标添加说明性文本信息
axis([xmin xmax ymin ymax]) 设置坐标轴的最小最大值
例5.1.2 给例5.1.1 的图形中加入网络和标记。(见图5.1.3 和5.1.4)
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,x,y2)
>> grid on
>> xlabel('independent variable X')
>> ylabel('Dependent Variable Y1 & Y2')
>> title('Sine and Cosine Curve')
>> text(1.5,0.3,'cos(x)')
>> gtext('sin(x)')
>> axis([0 2*pi -0.9 0.9])
图5.1.3 使用了图形修饰的plot 函数绘制的正弦曲线
5.1.3 图形的比较显示
在一般默认的情况下,MATLAB 每次使用plot 函数进行图形绘制,将重新产生一个图
形窗口。但有时希望后续的图形能够和前面所绘制的图形进行比较。一般来说有两种方法
一是采用hold on(/off)命令,将新产生的图形曲线叠加到已有的图形上;二是采用
subplot(m,n,k)函数,将图形窗口分隔成n m× 个子图,并选择第k 个子图作为当前图形
后在同一个视图窗口中画出多个小图形。
例5.1.3 在同一窗口中绘制线段。(见图5.1.5)
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> y4=log(x);
>> plot(x,y1,x,y2)
>> hold on
>> plot(x,y3)
>> plot(x,y4)
>> hold off
例5.1.4 在多个窗口中绘制图形。(见图5.1.6)
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> y3=exp(x);
>> y4=log(x);
>> subplot(2,2,1);
>> plot(x,y1);
>> subplot(2,2,2);
>> plot(x,y2);
>> subplot(2,2,3);
>> plot(x,y3);
>> subplot(2,2,4);
>> plot(x,y4);
[说明] (1)子窗口的序号按行由上往下,按列从左向右编号。
(2)如果不用指令clf 清除,以后图形将被绘制在子图形窗口中。
图5.1.4 设置坐标轴最大最小值的正弦曲线
图5.1.5 图形的比较显示(曲线叠加方法)
图5.1.6 图形的比较显示(图形窗口分割方法)
5.2 三维立体图形
5.2.1 三维曲线图
与二维图形相对应,MATLAB 提供了plot3 函数,可以在三维空间中绘制三维曲线,
它的格式类似于plot,不过多了z 方向的数据。plot3 的调用格式为:
plot3(x1,y1,z1,x2,y2,z2,...)
其中x1,y1,z1,x2,y2,z2,…等分别为维数相同的向量,分别存储着曲线的三个坐标值,该
的使用方式和plot 类似,也可以采用多种的颜色或线型(见表5.1.1)来区分不同的数据
只需在每组变量后面加上相关字符串即可实现该功能。
例5.2.1 绘制方程x=t
&&&&&&&&&&&&&&&&y=sin(t)
&&&&&&&&&&&&&&&&z=cos(t)
在t=[0,2*pi]上
的空间方程。(见图5.2.1)
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> plot3(y1,y2,x,'m:p')
>> grid on
>> xlabel('Dependent Variable Y1')
>> ylabel('Dependent Variable Y2')
>> zlabel('Independent Variable X')
>> title('Sine and Cosine Curve')
图5.2.1 函数plot 绘制的三维曲线图
5.2.2 三维曲面图
如果要画一个三维的曲面,可以使用mesh(X,Y,Z)或surf(X,Y,Z)函数来实现。
mesh 函数为数据点绘制网格线,图形中的每一个已知点和其附近的点用直线连接。surf
函数和mesh 的用法类似,但它可以画出着色表面图,图形中的每一个已知点与其相邻点以
平面连接。
为方便测试立体绘图,MATLAB 提供了一个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*ex
p(-(x+1).^2-y.^2)
对应的图形是一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点。
下面使用peaks 函数来比较一下mesh 和surf 的区别。
例5.2.2 分别用mesh 函数和surf 函数绘制高斯矩阵的曲面。
>> z=peaks(40);
>> mesh(z);
>> surf(z);
图5.2.2 mesh 函数绘制的三维曲面图
图5.2.3 surf 函数绘制的着色表面图
在曲面绘图中,另一个常用的函数是meshgrid 函数,其一般引用格式是:
[X, Y]=meshgrid (x, y)
其中x 和y 是向量,通过meshgrid 函数就可将x 和y 指定的区域转换成为矩阵X 和Y。
这样我们在绘图时就可以先用meshgrid 函数产生在x-y 平面上的二维的网格数据,再以一
组z 轴的数据对应到这个二维的网格,即可画出三维的曲面。
例5.2.3 绘制方程
&&&&&sin((x^2+y^2)^(1/2))
z = ---------------------
&&&&&&&&(x^2+y^2)^(1/2)
在x∈[-7.5,7.5];y∈[-7.5,7.5] 的图形。
>> x=-7.5:0.5:7.5;y=x;
>> [X,Y]=meshgrid(x,y);
>> R=sqrt(X.^2+Y.^2)+
>> Z=sin(R)./R;
>> surf(X,Y,Z)
>> xlabel('X 轴方向')
>> ylabel('Y 轴方向')
>> zlabel('Z 轴方向')
(见图5.2.4)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&_(x^2+y^2)
例5.2.4 绘制由方程形成的立体图。(见图5.2.5) z=xe
>> x=-2:0.1:2;y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*exp(-X.^2-Y.^2);
>> surf(X,Y,Z)
5.2.3 观察点
MTALAB 允许用户设置观察点,其指令是: view(azimuth,elevation)
其中方位角azimuth 是观察点和坐标原点连线在x-y 平面的投影和y 轴负方向的夹角,仰
elevation 是观察点与坐标原点的连线和x-y 平面的夹角。对于这两个角度,三维图形的
值分别是-37.5 和30,二维图形的默认值是0 和90。
例5.2.5 从不同的角度观察高斯矩阵的曲面。
>> z=peaks(40);
>> subplot(2,2,1);
>> mesh(z);
>> subplot(2,2,2);
>> mesh(z);
>> view(-37.5,-30);
>> subplot(2,2,3);
>> mesh(z);
>> view(180,0);
>> subplot(2,2,4);
>> mesh(z);
>> view(0,90);
图5.2.6 对应不同观察点的三维曲面图
5.3 其他图形函数
除了plot 绘图函数以外,在有些场合对绘制的曲线会有一些特殊要求,这就要其他函
数来实现,常用的几种函数如下(见表5.3.1)
表5.3.1 其他图形函数表
loglog 使用对数坐标系绘图
semilogx 横坐标为对数坐标轴,纵坐标为线性坐标轴
semilogy 横坐标为线性坐标轴,纵坐标为对数坐标轴
polar 绘制极坐标图
fill 绘制实心图
bar 绘制直方图
pie 绘制饼图
area 绘制面积图
quiver 绘制向量场图
stairs 绘制阶梯图
sterm 绘制火柴杆图
>> x=0:pi/10:2*
>> y1=sin(x);
>> subplot(2,2,1);
>> plot(x,y1);
>> subplot(2,2,2);
>> bar(x,y1);
>> subplot(2,2,3);
>> fill(x,y1,'g');
>> subplot(2,2,4);
>> stairs(x,y1,'k');
图5.3.1 其他图形函数
5.3.1 直方图
函数bar(x)可以绘制直方图,这对统计或者数据采集非常直观实用。它共有四种形式:
bar,bar3,barh 和bar3h,其中bar 和bar3 分别用来绘制二维和三维竖直方图,barh 和b
别用来绘制二维和三维水平直方图,调用格式是:
bar(x,y) 其中x 必须单调递增或递减,y 为n m× 矩阵,可视化结果为m 组,每
组n 个垂直柱,也就是把y 的行画在一起,同一列的数据用相同的颜色表示;
bar(x,y,width) (或bar(y,width))指定每个直方条的宽度,如width>1,则直方条会重
叠,默认值为width=0.8;
bar(…,’grouped’) 使同一组直方条紧紧靠在一起;
bar(…,’stack’) 把同一组数据描述在一个直方条上。
>> y=[5 3 2 9;4 7 2 7;1 5 7 3];
>> subplot(2,2,1),bar(y)
>> x=[5 9 11];
>> subplot(2,2,2),bar3(x,y)
>> subplot(2,2,3),bar(x,y,'grouped')
>> subplot(2,2,4),bar(rand(2,3),.75,'stack')
图5.3.2 直方图
5.3.2 面积图
函数area 用来绘制面积图,面积图在plot 的基础上填充x 轴和曲线之间的面积,该图
用于查看某个数在该列所有数的总和中所占的比例。
>> x=-3:3;
>> y=[3 2 5;6 1 8;7 4 9;6 3 7;8 2 9;4 2 9;3 1 7];
>> area(x,y)
图5.3.3 面积图
5.3.3 饼图
函数pie 用来绘制饼图,它可以形象地表示出向量中各元素所占比例。其调用格式是:
pie(x) x 中的元素通过x/sum(x)进行归一化,以确定饼图中的份额;
pie(x,explode) 向量explode 和x 元素数相同,用来指出需要分开的饼片,explode 中
不为零的部分会被分开。
图5.3.4 饼图
例5.3.4 设某班的某课程的考试成绩如下:90 分以上有32 人,81 至90 有58 人,71
至80 分有27 人,60 至70 分为21 人,60 分以下有16 人,画出饼图。(见图5.3.4)
>> x=[32 58 27 21 16];
>> explode0=[1 0 0 0 0];
>> subplot(1,2,1)
>> pie(x,explode0)
>> explode1=[0 0 0 0 1];
>> subplot(1,2,2)
>> pie(x,explode1)
5.3.4 不同坐标系中的绘图
Semilogx,semilogy,loglo,polar(theta,rho)的使用方法和plot 完全类似,不同的只是绘
不同的图形坐标上。函数semilogx 绘制x 轴为对数标度的图形,在半对数坐标系中绘图;
函数semilogy 绘制y 轴为对数标度的图形;函数loglog 绘制两个轴都为对数间隔的图形
函数polar(theta,rho)绘制极坐标图形,其中theta 为相角,rho 为其对应的半径。
例5.3.5 绘制ρ=acos(3θ),a=2 的图形。(见图5.3.5)
>> theta=-pi:pi/80:
>> polar(theta,2*cos(3*theta))
图5.3.5 极坐标图
5.4 符号表达式绘图
MATLAB 软件提供了将表达式进行图形显示的功能。完成此功能需调用fplot 函数和
ezplot 函数。
函数fplot 用来绘制数学函数,其调用格式为: fplot(fun,lims)
其中fun 就是所要绘制的函数,可以是定义函数的M 文件名,也可以是以x 为变量的可计
算字符串。例如’diric(x,10)’或’[sin(x),cos(x)]’,对于向量x 的每个元素,函数
fun(x)必须返
回一个行向量。如果fun 返回[f1(x),f2(x),f3(x)],输入[x1;x2],就会返回矩阵
f1(x1) f2(x1) f3(x1)
f1(x2) f2(x2) f3(x2)
lims=[XMIN XMAX YMIN YMAX]限定了x,y 轴上的绘图空间。
>> subplot(2,2,1),fplot('humps',[0 1])
>> subplot(2,2,2),fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi])
>> subplot(2,2,3),fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])
>> subplot(2,2,4),fplot('sin(1./x)',[0.01 0.1],1e-3)
图5.4.1 fplot 函数绘制表达式图形
ezplot 函数是简捷绘图指令之一,它无需数据准备,直接画出函数图形,基本调用格式
为ezplot(f)
其中f 是字符串或代表数学函数的符号表达式,只有一个符号变量,可以是x,缺省情况下
x 轴的绘图区域为] 2 , 2 [ π π ? ,但我们可以用ezplot(f,xmin,xmax)或ezp
lot(f,[xmin,xmax])来指
定x 的范围。
>> y='x^2';
>> subplot(1,2,1)
>> ezplot(y)
>> subplot(1,2,2)
>> y='sin(x)';
>> ezplot(y,[-pi,pi])
图5.4.2 ezplot 函数绘制表达式图形
5.5 plot 函数
MATLAB 对数据是按列存储和计算的,运用plot(x)时,当x 为一个向量时,以其元
素为纵坐标,其序号为横坐标值绘制曲线。当x 为实矩阵时,则以其序号为横坐标,按列
制每列元素相对于序号的曲线,当x 为n m× 矩阵时,就有n 条曲线。
如果x,y 是同维向量,plot(x,y)指令以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。
如x 是向量,y 是有一维与x 元素数量相等的矩阵,则以x 为共同横坐标,按列绘制y 每
元素值,曲线数为y 的另一维的元素数。如果x,y 是同维矩阵,则以x,y 对应列元素为、
坐标分别绘制曲线,数目等于矩阵的列数。
>> x=[3 5 10 8];
>> subplot(2,2,1)
>> plot(x)
>> x=[3 5 10 8;7 2 9 4;2 7 2 7]';
>> subplot(2,2,2)
>> plot(x)
>> x=[3 5 6 8];
>> y=[1 5 10 4];
>> subplot(2,2,3)
>> plot(x,y)
>> x=[1 3 5 7;2 4 6 8]';
>> y=[6 2 5 10;3 5 2 6]';
>> subplot(2,2,4)
>> plot(x,y,'k:*')
5.6 交互式图形指令
ginput 是一个比较特殊的图形指令,用作获取图上数据,例如指令
>>[x,y]=ginput(6) % 从图形上选取6 个点
此时,ginput 指令将把当前图形调入前台,同时光标变为十字叉,移动光标,使交叉点落
目标点上,单击鼠标,即可获得该点数据。
>> fplot('humps',[0 1])
>> ginput(6)
阅读(182834) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。matlab:横坐标设置我的矩阵是99*99行向量坐标从1:1:99如何让我的矩阵行向量变为-49:1:49?
浮云粉丝68
矩阵存在内存中都是固定的下标表示储存位置的matlab是1~Nc语言是0~N-1这个不能改的如果你只是想在画图的时候,让它的坐标改变你可以把坐标加进去例如你的数据矩阵a是99x99的矩阵imagesc(a); 就是按照矩阵画图,纵横坐标都是自然的1:1:99你也可以imagesc([-49:1:49],[1:1:99],a);那么横坐标就改为-49:1:49了如果你想要访问矩阵的数据例如想访问 (-49,1)(横坐标-49,纵坐标1)这一点就是要访问a(1,1)你可以设至一个向量x=-49:1:49用a(x==-49,1)访问对应的x,y坐标的数据
为您推荐:
其他类似问题
扫描下载二维码matlab 定义向量_百度知道
matlab 定义向量
jpg" />p为复杂曲线.com/zhidao/wh%3D600%2C800/sign=df2cdd7c44a7d933bffdec759d7bfd2b/d009b3de9c82d1581c20bedbc3e423c.hiphotos://a.baidu://a.baidu.jpg" esrc="http,第二例为y.baidu,第一列为x
来自团队:
其他类似问题
为您推荐:
书法家的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁479125人阅读
Matlab绘图
强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。
本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。
一.二维绘图
二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。
一.绘制二维曲线的基本函数
在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。
1. plot函数的基本用法
plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式
plot(x,y)&&&& 其中x,y为长度相同的向量,存储x坐标和y坐标。
例51 在[0 , 2pi]区间,绘制曲线
程序如下:在命令窗口中输入以下命令&&
&& x=0:pi/100:2*
&& y=2*exp(-0.5*x).*sin(2*pi*x);
&& plot(x,y)
程序执行后,打开一个图形窗口,在其中绘制出如下曲线
注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。
例52 绘制曲线
这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线:
&& t=-pi:pi/100:
&& x=t.*cos(3*t);
&& y=t.*sin(t).*sin(t);
&& plot(x,y)
程序执行后,打开一个图形窗口,在其中绘制出如下曲线
以上提到plot函数的自变量x,y为长度相同的向量,这是最常见、最基本的用法。实际应用中还有一些变化。分别说明:
2. 含多个输入参数的plot函数
plot函数可以包含若干组向量对,每一组可以绘制出一条曲线。含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,&,xn,yn)
如下列命令可以在同一坐标中画出3条曲线。
&& x=linspace(0,2*pi,100);
&& plot(x,sin(x),x,2*sin(x),x,3*sin(x))
当输入参数有矩阵形式时,配对的x,y按对应的列元素为横坐标和纵坐标绘制曲线,曲线条数等于矩阵的列数。
&& x=linspace(0,2*pi,100);
&& y1=sin(x);
&& y2=2*sin(x);
&& y3=3*sin(x);
&& x=[x;x;x]';
&& y=[y1;y2;y3]';
&& plot(x,y,x,cos(x))
x,y都是含有三列的矩阵,它们组成输入参数对,绘制三条曲线;x和cos(x)又组成一对,绘制一条余弦曲线。
利用plot函数可以直接将矩阵的数据绘制在图形窗体中,此时plot函数将矩阵的每一列数据作为一条曲线绘制在窗体中。如
&& A=pascal(5)
&&&& 1&&&& 1&&&& 1&&&& 1&&&& 1
&&&& 1&&&& 2&&&& 3&&&& 4&&&& 5
&&&& 1 &&&& 3&&&& 6&&& 10&&& 15
&&&& 1&&&& 4&&& 10&&& 20&&& 35
&&&& 1&&&& 5&&& 15&&& 35&&& 70
&& plot(A)
3. 含选项的plot函数
Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示:
&朝下三角符号
&朝上三角符号
&朝左三角符号
&朝右三角符号
例 用不同的线型和颜色在同一坐标内绘制曲线 及其包络线。
&& x=(0:pi/100:2*pi)';
&& y1=2*exp(-0.5*x)*[1,-1];
&& y2=2*exp(-0.5*x).*sin(2*pi*x);
&& x1=(0:12)/2;
&& y3=2*exp(-0.5*x1).*sin(2*pi*x1);
&& plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp');
在该plot函数中包含了3组绘图参数,第一组用黑色虚线画出两条包络线,第二组用蓝色双划线画出曲线y,第三组用红色五角星离散标出数据点。
4. 双纵坐标函数plotyy
在Matlab中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy函数,它能把具有不同量纲,不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析。使用格式为:plotyy(x1,y1,x2,y2)
x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左边的对应x1,y1数据对,右边的对应x2,y2。
例:(略)
二.绘制图形的辅助操作
绘制完图形以后,可能还需要对图形进行一些辅助操作,以使图形意义更加明确,可读性更强。
1. 图形标注
在绘制图形时,可以对图形加上一些说明,如图形的名称、坐标轴说明以及图形某一部分的含义等,这些操作称为添加图形标注。有关图形标注函数的调用格式为:
title(&图形名称&) (都放在单引号内)
xlabel(&x轴说明&)
ylabel(&y轴说明&)
text(x,y,&图形说明&)
legend(&图例1&,&图例2&,&) P190
其中,title、xlabel和ylabel函数分别用于说明图形和坐标轴的名称。text函数是在坐标点(x,y)处添加图形说明。(P88 或用gtext命令)。legend函数用于绘制曲线所用线型、颜色或数据点标记图例,图例放置在空白处,用户还可以通过鼠标移动图例,将其放到所希望的位置。除legend函数外,其他函数同样适用于三维图形,在三维中z坐标轴说明用zlabel函数。
上述函数中的说明文字,除了使用标准的ASCII字符外,还可以使用LaTex(一种流行的数学排版软件)格式的控制字符,这样就可以在图形上添加希腊字符,数学符号和公式等内容。在Matlab支持的LaTex字符串中,用/bf , /it , /rm控制字符分别定义黑体、斜体和正体字符,受LaTex字符串控制部分要加大括号{}括起来。例如,text(0.3,0.5,&the usful {/bf MATLAB}&),将使MATLAB一词黑体显示。一些常用的LaTex字符见表,各个字符可以单独使用也可以和其他字符及命令配合使用。如text(0.3 ,0.5 ,&sin({/omega}t+{/beta})&)
将得到标注效果 。
/leftarrow
/rightarrow
/downarrow
2. 坐标控制
在绘制图形时,Matlab可以自动根据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清晰的显示出来。所以,一般情况下用户不必选择坐标轴的刻度范围。但是,如果用户对坐标不满意,可以利用axis函数对其重新设定。其调用格式为
axis([xmin xmax ymin ymax zmin zmax])
如果只给出前四个参数,则按照给出的x、y轴的最小值和最大值选择坐标系范围,绘制出合适的二维曲线。如果给出了全部参数,则绘制出三维图形。
axis函数的功能丰富,其常用的用法有:
axis equal :纵横坐标轴采用等长刻度
axis square:产生正方形坐标系(默认为矩形)
axis auto:使用默认设置
axis off:取消坐标轴
axis on :显示坐标轴
还有:给坐标加网格线可以用grid命令来控制,grid on/off命令控制画还是不画网格线,不带参数的grid命令在两种之间进行切换。
给坐标加边框用box命令控制。和grid一样用法
例 :绘制分段函数,并添加图形标注。(略)
3. 图形保持
一般情况下,每执行一次绘图命令,就刷新一次当前图形窗口,图形窗口原有图形将不复存在,如果希望在已经存在的图形上再继续添加新的图形,可以使用图形保持命令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*
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*
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');
二.三维曲面
1.平面网格坐标矩阵的生成
当绘制z=f(x,y)所代表的三维曲面图时,先要在xy平面选定一矩形区域,假定矩形区域为D=[a,b]&[c,d],然后将[a,b]在x方向分成m份,将[c,d]在y方向分成n份,由各划分点做平行轴的直线,把区域D分成m&n个小矩形。生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数绘图。
产生平面区域内的网格坐标矩阵有两种方法:
利用矩阵运算生成。
y=(c:dy:d)&;
X=ones(size(y))*x;
Y=y*ones(size(x));
经过上述语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素个数,矩阵Y的每一列都是向量y,列数等于向量x的元素个数。
利用meshgrid函数生成;
[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*
[x,y]=meshgrid(x);
z=sin(y).*cos(x);
mesh(x,y,z);
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
title('mesh');
%program 2
x=0:0.1:2*
[x,y]=meshgrid(x);
z=sin(y).*cos(x);
surf(x,y,z);
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
title('surf');
%program 3
x=0:0.1:2*
[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');
程序执行结果分别如上图所示。从图中可以发现,网格图(mesh)中线条有颜色,线条间补面无颜色。曲面图(surf)的线条都是黑色的,线条间补面有颜色。进一步观察,曲面图补面颜色和网格图线条颜色都是沿z轴变化的。用plot3 绘制的三维曲面实际上由三维曲线组合而成。可以分析plot(x&,y&,z&)所绘制的曲面的特征。
例516 绘制两个直径相等的圆管相交的图形。
z=1.2*(0:m)/m;
r=ones(size(z));
theta=(0:m)/m*2*
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
surf(x2,y2,z2);&&&&&&&&& %绘制平放的圆管
axis equal ,axis off
title ('两个等直径圆管的交线');
例517 分析由函数 构成的曲面形状与平面z=a的交线。
此外,还有两个和mesh函数相似的函数,即带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz,其用法和mesh类似。不同的是,meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。
surf函数也有两个类似的函数,即具有等高线的曲面函数surfc和具有光照效果的曲面函数surfl。
例518 在xy平面内选择[-8, 8]&[-8, 8]绘制函数,
[x,y]=meshgrid(-8:0.5:8);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);
subplot(2,2,1);
meshc(x,y,z);
title('meshc');
subplot(2,2,2);
meshz(x,y,z);
title('meshz');
subplot(2,2,3);
surfc(x,y,z);
title('surfc');
subplot(2,2,4);
surfl(x,y,z);
title('surfl');
3.标准三维曲面
Matlab提供了一些函数用于绘制标准三维曲面,这些函数可以产生相应的绘图数据,常用于三维图形的演示。如,sphere函数和cylinder函数分别用于绘制三维球面和柱面。sphere函数的调用格式为:
[x,y,z]=sphere(n);
该函数将产生(n+1)&(n+1矩阵x,y,z 。采用这三个矩阵可以绘制出圆心位于原点、半径为1的单位球体。若在调用该函数时不带输出参数,则直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20。若n值取的比较小,则绘制出多面体的表面图。
cylinder函数的调用格式为:
[x,y,z]=cylinder(R,n)
其中R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。如:cylinder(3)生成一个圆柱,cylinder([10,1])生成一个圆锥。而t=0:pi/100:4* R=sin(t); cylinder(R,30);生成一个正弦圆柱面。
另外Matlab还提供了一个peaks函数,称为多峰函数,常用于三维曲面的演示。该函数可以用来生成绘图数据矩阵,矩阵元素由函数:
在矩形区域[-3 3]&[-3 3]的等分网格点上的函数值确定。如:z=peaks(30)
将生成一个30&30矩阵,
例519 绘制标准三维曲面图形
t=0:pi/20:2*
[x,y,z]=cylinder(2+sin(t),30);
subplot(1,3,1);
surf(x,y,z);
subplot(1,3,2);
surf(x,y,z);
subplot(1,3,3);
[x,y,z]=peaks(30);
meshz(x,y,z);
3.其他三维图形。
在介绍二维图形时,曾经提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,其函数分别为bar3,stem3,pie3和fill3。
bar3绘制三维条形图,常用格式为:
bar3(y);
bar3(x,y)
在第一种格式中,y的每个元素对应于一个条形。第二种格式在x指定的位置上绘制y中元素的条形图。
stem3函数绘制离散序列数据的三维杆图,常用格式为:
stem3(z)
stem3(x,y,z)
第一种格式将数据序列z表示为从xy平面向上延伸的杆图,x和y自动生成。第二种格式在x和y指定的位置上绘制数据序列z的杆图,x,y,z的维数要相同。
pie3函数绘制三维饼图,常用格式为:
x为向量,用x中的数据绘制一个三维饼图。
fill3函数可在三维空间内绘制出填充过的多边形,常用格式为:
fill3(x,y,z,c)
用x,y,z做多边形的顶点,而c指定了填充的颜色。
例520 绘制三维图形。
1绘制魔方阵的三维条形图2以三维杆图形式绘制曲线y=2sinx&3已知x =[43,3025] ,绘制三维饼图 &&&&4用随机的顶点坐标值画出5个黄色三角形
subplot(2,2,1);
bar3(magic(4));
subplot(2,2,2);
y=2*sin(0:pi/10:2*pi);
subplot(2,2,3);
pie3([43,3025]);
subplot(2,2,4);
fill3(rand(3,5),rand(3,5),rand(3,5),'y');
除了上面讨论的三维图形外,常用的图形还有瀑布图和三维曲面的等高线图。绘制瀑布图用waterfall函数,用法和meshz函数相似,只是它的网格线在x轴方向出现,具有瀑布效果。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。
例521 绘制多峰函数的瀑布图和等高线图。
subplot(1,2,1);
[X,Y,Z]=peaks(30);
waterfall(X,Y,Z);
xlabel('XX');ylabel('YY');zlabel('ZZ');
subplot(1,2,2);
contour3(X,Y,Z,12,'k');%其中12代表高度的等级数
xlabel('XX');ylabel('YY');zlabel('ZZ');
三.三维图形的精细处理
一.视点处理
在日常生活中,从不同的角度观察物体,所看到的物体形状是不一样的。同样,从不同视点绘制的三维图形的形状也是不一样的。视点位置可由方位角和仰角表示。
Matlab提供了设置视点的函数view,其调用格式为:
view(az,el)
其中az为方位角,el为仰角,它们均以度为单位。系统默认的视点定义为方位角为-37.5度,仰角30度。
例522 从不同视点绘制多峰函数曲面。
subplot(2,2,1);mesh(peaks);
view(-37.5,30);
title('1');
subplot(2,2,2);mesh(peaks);
view(0,90);
title('2');
subplot(2,2,3);mesh(peaks);
view(90,0);
title('3');
subplot(2,2,4);mesh(peaks);
view(-7,-10);
title('4');
二.色彩处理
三.图形的裁剪处理
Matlab定义的NaN常数可以用于表示那些不可使用的数据,利用这些特性,可以将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。例如,要削掉正弦波顶部或底部大于0.5的部分,可使用下面的程序。
x=0:pi/10:4*
i=find(abs(y)&0.5);
plot(x,y);
例524 绘制两个球面,其中一个在另一个里面,将外面的球裁掉一部分,以便能看到里面的球。
[x,y,z]=sphere(25);
%生成外面的大球
z1(:,1:4)=NaN;%将大球裁去一部分
c1=ones(size(z1));
surf(3*x,3*y,3*z1,c1); &&&&& %生成里面的小球
c2=2*ones(size(z2));
c2(:,1:4)=3*ones(size(c2(:,1:4)));
surf(1.5*x,1.5*y,1.5*z2,c2);
colormap([0 1 0;0.5 0 0;1 0 0]);
色图中使用三种颜色,外面的球是绿色,里面的球采用深浅不同的两种红色。
四.隐函数作图
如果给定了函数的显式表达式,可以先设置自变量向量,然后根据表达式计算函数向量,从而用plot等函数绘制出图形。但是当函数采用隐函数形式时,如: ,则很难利用上述方法绘制图形。Matlab提供了一个ezplot函数绘制隐函数图形。用法如下:
①&&&& 对于函数f=f(x),ezplot的调用格式为:
ezplot(f),在默认区间(-2pi,2pi)绘制图形。
ezplot(f,[a,b]),在区间(a,b)绘制
②&&&& 对于隐函数f=f(x,y),ezplot的调用格式为;
ezplot(f),在默认区间(-2pi,2pi),(-2pi,2pi)绘制f(x,y)=0的图形。
ezplot(f,[xmin,xmax,ymin,ymax]);在区间&&&&&&&&& 绘制图形。
ezplot(f,[a,b]),在区间(a,b),(a,b)绘制
③&&&& 对于参数方程x=x(t),y=y(t),ezplot函数的调用格式为:
ezplot(x,y),在默认区间 绘制x=x(t),y=y(t)图形。
ezplot(x,y,[tmin,tmax]),在区间(tmin,tmax)绘制x=x(t),y=y(t)图形。
例525 隐函数绘图举例。
subplot(2,2,1);
ezplot('x^2+y^2-9');
subplot(2,2,2);
ezplot('x^3+y^3-5*x*y+1/5')
subplot(2,2,3);
ezplot('cos(tan(pi*x))',[0,1]);
subplot(2,2,4);
ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi]);
其他隐函数绘图还有,ezpolar,ezcontour,ezplot3,ezmesh,ezmeshc,ezsurf,ezsurfc。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:565100次
积分:1398
积分:1398
排名:千里之外
原创:27篇
转载:39篇
评论:19条
(1)(2)(1)(6)(28)(12)(17)}

我要回帖

更多关于 matlab plot 横坐标 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信