MATLAB绘图.docx
- 文档编号:29753693
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:32
- 大小:2.16MB
MATLAB绘图.docx
《MATLAB绘图.docx》由会员分享,可在线阅读,更多相关《MATLAB绘图.docx(32页珍藏版)》请在冰豆网上搜索。
MATLAB绘图
Matlab绘图
对象:
离散数据、连续函数
目录
一、二维绘图2
1、plot函数的基本用法2
(1)plot(X,Y)2
其中2
(2)plot(Y)3
(3)plot(x1,y1,x2,y2,…,xn,yn)4
(4)plot(X,Y,LineSpec)5
2、图形处理7
(1)图形标注7
(2)坐标控制9
(3)图形叠绘10
(4)子图绘制11
(5)交互绘图11
(6)图形细化13
(6)视角与透视13
(7)图形裁剪14
3、双纵坐标函数plotyy15
4、特殊坐标绘图16
(1)极坐标图16
(2)对数坐标图17
5、函数绘图17
(1)fplot函数17
(2)ezplot函数18
6、其他形式的二维图形19
(1)饼状图19
(2)直方图19
(3)柱状图20
(3)离散数据散点图22
(4)散点图22
(5)向量图23
(6)等值线25
二、三维绘图25
1、曲线图25
2、网格图26
(1)平面网格坐标矩阵的生成26
(2)绘制三维曲面的函数27
(3)标准三维曲面29
一、二维绘图
二维图形是将平面坐标上的数据点连接起来的平面图形。
可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。
二维图形的绘制是其他绘图操作的基础。
1、plot函数的基本用法
绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。
(1)plot(X,Y)
其中x,y为长度相同的向量,存储x坐标和y坐标。
例在[0,2pi]区间,绘制曲线
程序如下:
在命令窗口中输入以下命令
>>x=0:
pi/100:
2*pi;
>>y=2*exp(-0.5*x).*sin(2*pi*x);
>>plot(x,y)
程序执行后,打开一个图形窗口,在其中绘制出如下曲线
注意:
指数函数和正弦函数之间要用点乘运算,因为二者是向量。
例绘制曲线
这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线:
>>t=-pi:
pi/100:
pi;
>>x=t.*cos(3*t);
>>y=t.*sin(t).*sin(t);
>>plot(x,y)
(2)plot(Y)
【1】Y为向量:
(向量索引值,向量值)
【2】实数矩阵:
列向量对其坐标的索引值
【3】复向量:
(实部,虚部)
例绘制多幅曲线
(3)plot(x1,y1,x2,y2,…,xn,yn)
plot函数可以包含若干组向量对,每一组可以绘制出一条曲线。
含多个输入参数的plot函数调用格式为:
例下列命令可以在同一坐标中画出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)
A=
1 1 1 1 1
1 2 3 4 5
13 6 1015
1 4 10 2035
1 5 15 3570
>>plot(A)
(4)plot(X,Y,LineSpec)
例用不同的线型和颜色在同一坐标内绘制曲线及其包络线。
>>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,第三组用红色五角星离散标出数据点。
2、图形处理
(1)图形标注
对图形加上一些说明,如图形的名称、坐标轴说明以及图形某一部分的含义等,这些操作称为添加图形标注。
有关图形标注函数的调用格式为:
title(’图形名称’)(都放在单引号内)
xlabel(’x轴说明’)
ylabel(’y轴说明’)
text(x,y,’图形说明’)在坐标点(x,y)处添加图形说明,或用gtext命令
legend(’图例1’,’图例2’,…)用于绘制曲线所用线型、颜色或数据点标记图例,图例放置在空白处,用户还可以通过鼠标移动图例,将其放到所希望的位置
除legend函数外,其他函数同样适用于三维图形,在三维中z坐标轴说明用zlabel函数。
上述函数中的说明文字,除了使用标准的ASCII字符外,还可以使用LaTex(一种流行的数学排版软件)格式的控制字符,这样就可以在图形上添加希腊字符,数学符号和公式等内容。
在Matlab支持的LaTex字符串中,用/bf,/it,/rm控制字符分别定义黑体、斜体和正体字符,受LaTex字符串控制部分要加大括号{}括起来。
例如,text(0.3,0.5,’theusful{/bfMATLAB}’),将使MATLAB一词黑体显示。
一些常用的LaTex字符见表,各个字符可以单独使用也可以和其他字符及命令配合使用。
如text(0.3,0.5,’sin({/omega}t+{/beta})’)
将得到标注效果。
(2)坐标控制
在绘制图形时,Matlab可以自动根据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清晰的显示出来。
所以,一般情况下用户不必选择坐标轴的刻度范围。
但是,如果用户对坐标不满意,可以利用axis函数对其重新设定。
其调用格式为
axis([xminxmaxyminymaxzminzmax])
如果只给出前四个参数,则按照给出的x、y轴的最小值和最大值选择坐标系范围,绘制出合适的二维曲线。
如果给出了全部参数,则绘制出三维图形。
axis函数的功能丰富,其常用的用法有:
axisequal:
纵横坐标轴采用等长刻度
axissquare:
产生正方形坐标系(默认为矩形)
axisauto:
使用默认设置
axisoff:
取消坐标轴
axison:
显示坐标轴
axistight:
把数据范围设置为坐标轴范围
(3)图形叠绘
功能:
将不同的数据绘制在一张图上
命令:
hold
用法:
holdon前面图形保留
Holdoff前面图形覆盖
Hold切换holdon/holdoff
例
>>x=-pi:
pi/20:
pi;
>>plot(sin(x))
>>holdon;
>>plot(cos(x))
(4)子图绘制
对称子图subplot(m,n,p)orsubplot(mnp)图形排成m行n列,第p幅
非对称子图subplot(m,n,[pq])
例
>>x=linspace(0,2*pi,100);
>>y1=cos(x);
>>y2=sin(x);
>>y3=tan(x);
>>subplot(2,2,[13]);plot(x,y3)
>>subplot(222);plot(y1);
>>subplot(224);plot(y2)
(5)交互绘图
使用鼠标绘图
ginput
1)[x,y]=ginput(n)函数从当前的坐标图上选择n个点,并返回这n个点的相应的坐标向量x、y。
n个点可由鼠标定位。
用户可以按下回车键在输入n个点之前终止输入;
(2)[x,y]=ginput函数获得任意个数的输入点,直到用户按下回车键为止并返回这n个点的相应的坐标向量x、y;
(3)[x,y,button]=ginput(n) 函数从当前的坐标图上选择n个点,并返回这n个点的坐标向量值x、y和键或按钮的标示。
参数button是一个整数向量,显示用户按下哪一个鼠标键或返回ASCII码值。
Gtext
gtext(‘sting1’,’string2’,……,’stringn’)鼠标左键确认字符串放置位置
zoom用于变焦
zoomon:
可变焦
zoomoff:
不可
zoom:
on和off之间切换
zoomxon/yon:
x/y轴可变焦
zoomout:
恢复初始状态
zoom(factor):
设置变焦放缩因子,默认为2
(6)图形细化
给坐标加网格线可以用grid命令来控制,
gridon/off命令控制画还是不画网格线
grid命令在两种之间进行切换
gridminor网格细化
给坐标加边框用box命令控制。
和grid一样用法
(6)视角与透视
视角:
View(az,el)/view([az,el])/[az,el]=view:
(方位角,仰角)系统默认的视点定义为方位角为-37.5度,仰角30度。
View([x,y,z]):
指向原点的视角方向
View
(2):
默认2维视角
View(3)
透视:
Hiddenon:
不透视
Hiddenoff:
透视
Hidden:
切换
只用于mesh函数中
(7)图形裁剪
Matlab定义的NaN常数可以用于表示那些不可使用的数据,利用这些特性,可以将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。
例如,要削掉正弦波顶部或底部大于0.5的部分,可使用下面的程序。
x=0:
pi/10:
4*pi;
y=sin(x);
i=find(abs(y)>0.5);
x(i)=NaN;
plot(x,y);
例绘制两个球面,其中一个在另一个里面,将外面的球裁掉一部分,以便能看到里面的球。
[x,y,z]=sphere(25);
%生成外面的大球
z1=z;
z1(:
1:
4)=NaN;%将大球裁去一部分
c1=ones(size(z1));
surf(3*x,3*y,3*z1,c1); %生成里面的小球
holdon
z2=z;
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([010;0.500;100]);
gridon
holdoff
色图中使用三种颜色,外面的球是绿色,里面的球采用深浅不同的两种红色。
3、双纵坐标函数plotyy
功能:
绘制出具有不同纵坐标标度的两个图形,它能把具有不同量纲,不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析
使用格式为:
plotyy(x1,y1,x2,y2)
plotyy(x1,y1,x2,y2,function)
plotyy(x1,y1,x2,y2,’function1’,function2’)
(function表示绘图函数,有plot,semilogx,semilogy,loglog,stem)
x1,y1对应一条曲线,x2,y2对应另一条曲线。
横坐标的标度相同,纵坐标有两个,左边的对应x1,y1数据对,右边的对应x2,y2。
例绘制图形
>>x=0:
0.1:
20;
>>y1=200*exp(-0.5*x);
>>y2=0.8*exp(-0.5*x);
>>figure;
>>subplot(131);plotyy(x,y1,x,y2)
>>subplot(132);plotyy(x,y1,x,y2,'semilogy')
>>subplot(133);plotyy(x,y1,x,y2,'plot','semilogy')
4、特殊坐标绘图
(1)极坐标图
polar函数用来绘制极坐标图,调用格式为:
polar(theta,rho,选项)
其中,theta为极坐标极角,rho为极径,选项的内容和plot函数相似。
例:
绘制极坐标图
t=0:
0.01:
2*pi;
y=sin(2*t).*cos(2*t);
subplot(121);plot(t,y,'r');
axistight;title('plot');
subplot(122);polar(t,sin(2*t).*cos(2*t),'--g')
>>axistight;title('polar');
(2)对数坐标图
在实际应用中,经常用到对数坐标,Matlab提供了绘制对数和半对数坐标曲线的函数,其调用格式为:
semilogx(x1,y1,选项1,x2,y2,选项2,…)
semilogy(x1,y1,选项1,x2,y2,选项2,…)
loglog(x1,y1,选项1,x2,y2,选项2,…)
semilogx函数使用半对数坐标,x轴为常用对数刻度,y轴线性刻度semilogy恰好和semilogx相反
loglog函数使用全对数坐标,x、y轴均采用对数刻度。
5、函数绘图
(1)fplot函数
调用格式:
fplot(fun,limit):
fun为待绘制函数,limit为自变量的上下限
fplot(fun,limit,linespec):
linespec设置绘制线的属性
fplot(fun,limit,tol):
tol为容许误差
fplot(fun,limit,tol,linespec)
fplot(fun,limit,n):
n为最小分段数
例:
>>t1=0.01:
0.005:
0.1;
>>t2=0.01:
0.001:
0.1;
>>t3=0.01:
0.0002:
0.1;
>>sn=@(x)sin(1./x);
>>y1=sn(t1);
>>y2=sn(t2);
>>y3=sn(t3);
>>subplot(411);plot(t1,y1,'g');
>>axistight;title('plot间距0.005');
>>subplot(412);plot(t2,y2,'g');
>>axistight;title('plot间距0.001');
>>subplot(413);plot(t3,y3,'g');
>>axistight;title('plot间距0.0002');
>>subplot(414);fplot(sn,[0.01,0.1])
>>axistight;title('fplot自动调整间距');
(2)ezplot函数
ezplot(fun):
fun为待绘制函数,自变量默认为(-2*pi,2*pi)
ezplot(fun,[xmin,xmax]):
设置自变量范围
ezplot(fun2):
fun2为隐函数
ezplot(fun2,[xymin,xymax])
ezplot(fun2,[xmin,xmax,ymin,ymax])
ezplot(funx,funy):
对x、y的参数式
ezplot(funx,funy,[tmin,tmax])
例:
>>subplot(231);ezplot('sin(x)')
>>subplot(232);ezplot('sin(x)',[-pi,pi])
>>subplot(233);ezplot('x^2-y^2-1')
>>subplot(234);ezplot('x^2-y^2-1',[-10,10,-10,10])
>>subplot(235);ezplot('cos(x)','sin(x)')
>>subplot(236);ezplot('cos(x)','sin(x)',[-0.75*pi,pi])
6、其他形式的二维图形
(1)饼状图
pie(X):
绘制参数X的饼状图
pie(X,explode):
explode为与X同维的矩阵,表示分块的突出,非0外移
pie(…,lables):
lables定义相应块的名称
三维饼状图对应pie3(…)
例:
>>x=[250.53.52];
>>explode=[01010];
>>subplot(121);pie(x,explode)
>>colormapjet
>>label={'a','b','c','d','e'};
>>subplot(122);pie3(x,explode,label)
(2)直方图
用横轴表示数据类型,纵轴表示分布情况(出现次数)
n=hist(Y):
Y为待统计量
n=hist(Y,x):
x为分组向量
n=hist(Y,nbins):
nbins为指定条形数目
histc计算统计分布量
n=histc(x,edge):
x为待统计量,edge为统计范围
n=histc(x,edge,dim):
dim为维度
例:
>>x=-2.9:
0.1:
2.9;
>>y=randn(100000,1);
>>subplot(121);hist(y,x)
>>n_elements=histc(y,x);
>>c_elements=cumsum(n_elements);
>>subplot(122);bar(x,c_elements,'BarWidth',1)
(3)柱状图
bar(Y):
Y为待绘制向量或矩阵
bar(x,Y):
x定义x轴方向的绘制位置
bar(_,width):
占空比
bar(_,style):
定义形状类型,group,stracked,hist,histc
bar(_,name,value):
属性名和属性值
bar(_,bar_color):
颜色
水平柱形图barh,三维bar3,参照bar
例:
>>y1=[123.203131.669150.697179.323203.212];
>>y2=[75.99591.972105.711226.505249.663];
>>Y=[y1,y2];
>>x=[2:
4:
18]';
>>subplot(241);bar(y1);title('default')
>>subplot(242);bar(y1,0.4);title('width=0.4')
>>subplot(243);bar(x,y1);title('specifiedx')
>>subplot(244);barh(x,y1);title('horizontal')
>>subplot(245);bar(Y,'grouped');title('group')
>>subplot(246);bar(Y,'stacked');title('stacked')
>>subplot(247);bar(Y,'histc');title('histc')
>>subplot(248);bar(Y,'hist');title('hist')
(3)离散数据散点图
火柴棍图stem函数
二维:
Stem(Y):
待绘制图形纵坐标
Stem(X,Y):
(横坐标,纵坐标)
Stem(…,’fill’):
填充点颜色
Stem(…,Linespec):
火柴棍线属性
三维:
对应为stem3
例:
>>t=linspace(-2*pi,2*pi,10);
>>x=cos(t);y=sin(t);
>>subplot(221);stem(y);axistight;
>>subplot(222);stem(y,'fill','--');axistight;
>>subplot(223);stem(t,y);axistight;
>>subplot(224);stem(x,y);axistight;
(4)散点图
Scatter(X,Y,S,C):
(X,Y),S决定大小,C设置颜色
Scatter(X,Y)
Scatter(X,Y,S)
Scatter(…,markertype):
标识形状
Scatter(…,’filled’):
填充点颜色
三维对应为scatter3
例:
>>loadseamount
>>subplot(131);scatter(x,y,5,z);axistight
>>subplot(132);scatter(x,y,sqrt(-z/2),[.500],'filled');axistight
>>subplot(133);scatter3(x,y,z,5,'filled'),view(40,35);axistight
(5)向量图
绘制向量场的形状
二维:
Quiver(x,y,u,v):
(x,y)处速度为(u,v)
Quiver(u,v)
Quiver(…,scale):
向量图形长度,默认为1
Quiver(…,Linespec):
线属性
Quiver(…,linespec,’filled’):
填充点颜色
三维:
quiver3
例:
>>vz=10;a=-32;t=0:
.1:
1;
>>z=vz*t+1/2*a*t.^2;
>>vx=2;x=vx*t;vy=3;y=vy*t;
>>u=gradient(x);v=gradient(y);w=gradient(z);
>>scale=0;
>>subplot(131);quiver3(x,y,z,u,v,w,scale);view([7018])
>>title('抛物线运动路径与速度');
>>subplot(132);quiver(x,z,u,w,scale);axis([04-102])
>>title('抛物线运动路径与速度XZ面投影')
>>subplot(133);quiver(y,z,v,w,scale);axis([04-102])
>>title('抛物线运动路径与速度YZ面投影')
(6)等值线
contour(Z):
数值矩阵
contour(Z,n):
等值线条数
contour(Z,v):
向量
contour(X,Y,Z)
contour(X,Y,Z,n)
contour(…,linespec):
线属性
例:
>>[x,y]=meshgrid([-2:
.25:
2]);
>>z=x.*exp(-x.^2-y.^2);
>>[px,py]=gradient(z,.25,.25);
>>subplot(221);contour(x,y,z,30);title('2Dcontour');
>>subplot(222);contour3(x,y,z
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 绘图