Matlab绘制函数图像函数示例汇总.docx
《Matlab绘制函数图像函数示例汇总.docx》由会员分享,可在线阅读,更多相关《Matlab绘制函数图像函数示例汇总.docx(12页珍藏版)》请在冰豆网上搜索。
Matlab绘制函数图像函数示例汇总
matlab中最基本的函数plot()的用法之杨若古兰创作
标签:
matlabplot指令
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*pi;
>>y1=sin(x);
>>y2=cos(x);
>>plot(x,y1,x,y2)
图5.1.1函数plot绘制的正弦曲线
在绘制曲线图形时,经常采取多种色彩或线型来区分分歧的数据组,MATLAB软件专
门提供了这方面的参数选项(见表5.1.1),我们只需在每个坐标后加上相干字符串,就可
实现它们的功能.
-2-
表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使用分歧标识表记标帜的plot函数绘制的正弦曲线
5.1.2图形润色
MATLAB软件为用户提供了一些特殊的图形函数,用于润色曾经绘制好的图形.
函数含义
gridon(/off)给当前图形标识表记标帜添加(取消)收集
xlable(‘string’)标识表记标帜横坐标
ylabel(‘string’)标识表记标帜纵坐标
title(‘string’)给图形添加题目
text(x,y,’string’)在图形的任意地位添加说明性文本信息
gtext(‘string’)利用鼠标添加说明性文本信息
axis([xminxmaxyminymax])设置坐标轴的最小最大值
-3-
例5.1.2给例5.1.1的图形中加入收集和标识表记标帜.(见图5.1.3和5.1.4)
>>x=0:
pi/10:
2*pi;
>>y1=sin(x);
>>y2=cos(x);
>>plot(x,y1,x,y2)
>>gridon
>>xlabel('independentvariableX')
>>ylabel('DependentVariableY1&Y2')
>>title('SineandCosineCurve')
>>text(1.5,0.3,'cos(x)')
>>gtext('sin(x)')
>>axis([02*pi-0.90.9])
图5.1.3使用了图形润色的plot函数绘制的正弦曲线
5.1.3图形的比较显示
在普通默认的情况下,MATLAB每次使用plot函数进行图形绘制,将从头发生一个图
形窗口.但有时但愿后续的图形能够和前面所绘制的图形进行比较.普通来说有两种方法
一是采取holdon(/off)命令,将新发生的图形曲线叠加到已有的图形上;
二是采取subplot(m,n,k)函数,将图形窗口分隔成nm×个子图,并选择第k个子图作为当前图形,然后在同一个视图窗口中画出多个小图形.
例5.1.3在同一窗口中绘制线段.(见图5.1.5)
>>x=0:
pi/10:
2*pi;
>>y1=sin(x);
>>y2=cos(x);
>>y3=x;
>>y4=log(x);
>>plot(x,y1,x,y2)
>>holdon
>>plot(x,y3)
>>plot(x,y4)
>>holdoff
例5.1.4在多个窗口中绘制图形.(见图5.1.6)
>>x=0:
pi/10:
2*pi;
>>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-
-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)
>>clf
>>x=0:
pi/10:
2*pi;
>>y1=sin(x);
>>y2=cos(x);
>>plot3(y1,y2,x,'m:
p')
>>gridon
>>xlabel('DependentVariableY1')
>>ylabel('DependentVariableY2')
>>zlabel('IndependentVariableX')
>>title('SineandCosineCurve')
图5.2.1函数plot绘制的三维曲线图
-7-
5.2.2三维曲面图
如果要画一个三维的曲面,可以使用mesh(X,Y,Z)或surf(X,Y,Z)函数来实现.
mesh函数为数据点绘制网格线,图形中的每一个已知点和其附近的点用直线连接.surf
函数和mesh的用法类似,但它可以画出着色概况图,图形中的每一个已知点与其相邻点以
平面连接.
为方便测试立体绘图,MATLAB提供了一个peaks函数,它可以发生一个的高斯分布矩阵,其生成方程是
NN×
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.2mesh函数绘制的三维曲面图
-8-
图5.2.3surf函数绘制的着色概况图
在曲面绘图中,另一个经常使用的函数是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)+eps;
>>Z=sin(R)./R;
>>surf(X,Y,Z)
>>xlabel('X轴方向')
>>ylabel('Y轴方向')
>>zlabel('Z轴方向')
例5.2.4绘制由方程构成的立体图.(见图5.2.5)z=xe-(x^2+y^2)
>>clear
>>x=-2:
0.1:
2;y=x;
>>[X,Y]=meshgrid(x,y);
>>Z=X.*exp(-X.^2-Y.^2);
-9-
>>surf(X,Y,Z)
-10-
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)
-11-
表5.3.1其他图形函数表
函数含义
loglog使用对数坐标系绘图
semilogx横坐标为对数坐标轴,纵坐标为线性坐标轴
semilogy横坐标为线性坐标轴,纵坐标为对数坐标轴
polar绘制极坐标图
fill绘制实心图
bar绘制直方图
pie绘制饼图
area绘制面积图
quiver绘制向量场图
stairs绘制阶梯图
sterm绘制火柴杆图
>>x=0:
pi/10:
2*pi;
>>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其他图形函数
-12-
5.3.1直方图
函数bar(x)可以绘制直方图,这对统计或者数据收集非常直观实用.它共有四种方式:
bar,bar3,barh和bar3h,其中bar和bar3分别用来绘制二维和三维竖直方图,barh和b
ar3h分别用来绘制二维和三维水平直方图,调用格式是:
bar(x,y)其中x必须单调递增或递减,y为nm×矩阵,可视化结果为m组,每组n个垂直柱,也就是把y的行画在一路,同一列的数据用不异的色彩暗示;
bar(x,y,width)(或bar(y,width))指定每个直方条的宽度,如width>1,则直方条会堆叠,默认值为width=0.8;
bar(…,’grouped’)使同一组直方条紧紧靠在一路;
bar(…,’stack’)把同一组数据描述在一个直方条上.
>>y=[5329;4727;1573];
>>subplot(2,2,1),bar(y)
>>x=[5911];
>>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=[325;618;749;637;829;429;317];
>>area(x,y)
-13-
图5.3.3面积图
5.3.3饼图
函数pie用来绘制饼图,它可以抽象地暗示出向量中各元素所占比例.其调用格式是:
pie(x)x中的元素通过x/sum(x)进行归一化,以确定饼图中的份额;
pie(x,explode)向量explode和x元素数不异,用来指出须要分开的饼片,explode中不为零的部分会被分开.
图5.3.4饼图
-14-
例5.3.4设某班的某课程的考试成绩如下:
90分以上有32人,81至90有58人,71
至80分有27人,60至70分为21人,60分以下有16人,画出饼图.(见图5.3.4)
>>x=[3258272116];
>>explode0=[10000];
>>subplot(1,2,1)
>>pie(x,explode0)
>>explode1=[00001];
>>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:
pi;
>>polar(theta,2*cos(3*theta))
图5.3.5极坐标图
5.4符号表达式绘图
MATLAB软件提供了将表达式进行图形显示的功能.完成此功能需调用fplot函数和
ezplot函数.
-15-
函数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=[XMINXMAXYMINYMAX]限制了x,y轴上的绘图空间.
>>subplot(2,2,1),fplot('humps',[01])
>>subplot(2,2,2),fplot('abs(exp(-j*x*(0:
9))*ones(10,1))',[02*pi])
>>subplot(2,2,3),fplot('[tan(x),sin(x),cos(x)]',2*pi*[-11-11])
>>subplot(2,2,4),fplot('sin(1./x)',[0.010.1],1e-3)
图5.4.1fplot函数绘制表达式图形
ezplot函数是简捷绘图指令之一,它无需数据筹办,直接画出函数图形,基本调用格式
为ezplot(f)
其中f是字符串或代表数学函数的符号表达式,只要一个符号变量,可所以x,缺省情况下
x轴的绘图区域为]2,2[ππ?
,但我们可以用ezplot(f,xmin,xmax)或ezplot(f,[xmin,xmax])来指定x的范围.
>>y='x^2';
>>subplot(1,2,1)
-16-
>>ezplot(y)
>>subplot(1,2,2)
>>y='sin(x)';
>>ezplot(y,[-pi,pi])
图5.4.2ezplot函数绘制表达式图形
5.5plot函数
MATLAB对数据是按列存储和计算的,应用plot(x)时,当x为一个向量时,以其元
素为纵坐标,其序号为横坐标值绘制曲线.当x为实矩阵时,则以其序号为横坐标,按列
绘制每列元素绝对于序号的曲线,当x为nm×矩阵时,就有n条曲线.
如果x,y是同维向量,plot(x,y)指令以x元素为横坐标值,y元素为纵坐标值绘制曲线.
如x是向量,y是有一维与x元素数量相等的矩阵,则以x为共同横坐标,按列绘制y每
列元素值,曲线数为y的另一维的元素数.如果x,y是同维矩阵,则以x,y对应列元素为、
纵坐标分别绘制曲线,数目等于矩阵的列数.
>>x=[35108];
>>subplot(2,2,1)
>>plot(x)
>>x=[35108;7294;2727]';
>>subplot(2,2,2)
>>plot(x)
>>x=[3568];
>>y=[15104];
-17-
>>subplot(2,2,3)
>>plot(x,y)
>>x=[1357;2468]';
>>y=[62510;3526]';
>>subplot(2,2,4)
>>plot(x,y,'k:
*')
5.6交互式图形指令
ginput是一个比较特殊的图形指令,用作获取图上数据,例如指令
>>[x,y]=ginput(6)%从图形上拔取6个点.此时,ginput指令将把当前图形调入前台,同时光标变成十字叉,挪动光标,使交叉点落
在目标点上,单击鼠标,即可获得该点数据.
>>fplot('humps',[01])
>>ginput(6)
x=
-18-
y=