天津大学matlab讲义应用基础第三章1.docx
《天津大学matlab讲义应用基础第三章1.docx》由会员分享,可在线阅读,更多相关《天津大学matlab讲义应用基础第三章1.docx(70页珍藏版)》请在冰豆网上搜索。
![天津大学matlab讲义应用基础第三章1.docx](https://file1.bdocx.com/fileroot1/2023-8/15/39b3e25a-e625-4ba4-956b-a24db208a249/39b3e25a-e625-4ba4-956b-a24db208a2491.gif)
天津大学matlab讲义应用基础第三章1
第3章MATLAB的图形功能
MATLAB可以给计算数据以二维、三维的图形表现。
通过对图形线型、色彩、光线、视角等的指定和处理,可把计算数据的特征更好地表现出来。
在MATLAB中有两个层次的绘图命令:
高层与底层绘图命令。
高层命令简单实用,底层命令有更强、更灵活的控制和表现图形的能力。
本章将先后介绍上述两类绘图命令。
但重点介绍高层绘图命令。
3.1二维图形
3.1.1基本二维绘图命令–plot
1、调用格式
格式1:
plot(x,y)
功能:
(1)若x,y为同规模的向量,则绘制以x为横坐标、y为纵坐标的一条曲线。
例如:
x=0:
0.02:
6;
y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;
plot(x,y)运行结果如下图所示:
(2)若x为向量、y是二维数组,则绘制以x为横坐标、y的每一列为纵坐标的多条曲线。
例如:
x=0:
0.02:
6;
y=[sin(x);cos(x)]';
plot(x,y)运行结果如下图所示:
(3)若x,y均为二维数组(必须相同规模),则绘制以它们的对应列为横、纵坐标的多条曲线。
例如:
x=[0:
0.02:
6;0:
0.02:
6];
y=[sqrt(x(1,:
));exp(-x(2,:
))];
plot(x.',y.')运行结果如下图所示:
注意:
在绘图时,以上x或y中的虚部将被忽略。
例如:
x=0:
0.2:
10*pi;
y=sqrt(sin(x));
plot(x,y)运行结果如下图所示:
格式2:
plot(y)
功能:
(1)若y为向量,其元素为实数,则绘制以其下标为横坐标、以y为纵坐标的图形,即相当于plot(1:
length(y),y)。
例如:
x=0:
0.02:
6;
y=1./((x–0.3).^2+0.01)+1./((x–0.9).^2+0.04)-6;
plot(y)
运行结果如下图所示:
(1)若y为复数向量,则绘制以其实部为横坐标,以其虚部系数为纵坐标的图形,即相当于plot(real(y),imag(y))。
例如:
x=0:
0.2:
2*pi;
y=sqrt(sin(x))
plot(y)
运行结果如下图所示:
y=
Columns1through4
00.44570.62400.7514
Columns5through8
0.84700.91730.96540.9927
Columns9through12
0.99980.98680.95360.8992
Columns13through16
0.82190.71800.57880.3757
Columns17through20
0+0.2416i0+0.5055i0+0.6652i0+0.7822i
Columns21through24
0+0.8699i0+0.9336i0+0.9755i0+0.9968i
Columns25through28
0+0.9981i0+0.9792i0+0.9399i0+0.8791i
Columns29through32
0+0.7945i0+0.6816i0+0.5286i0+0.2883i
(3)若是按y绘制曲线,曲线条线等于y的列数。
例如:
x=0:
0.2:
10*pi;
y=[sin(x);cos(x)]';
plot(y)
运行结果如下图所示:
格式3:
plot(x1,y1,x2,y2,…)
功能:
分别以(x1,y1)为二元组,(x2,y2)为二元组,…,按照plot(x,y)命令规则,绘出各组图形。
如:
x=0:
0.02:
2*pi;
y=sin(x);z=cos(x);
plot(x,y,x,z)运行结果如下图所示:
格式4:
(指定曲线线型、颜色和标记的)
plot(x,s)
plot(x,y,s)
plot(x1,y1,s1,x2,y2,s2…)
其中s为一字符串,用于指定绘图时的曲线线型、曲线颜色和线的标记。
曲线线型:
-(实线,缺省设置)
:
(虚线)
-.(点划线)
--(双划线)
例如:
x=0:
0.02:
2*pi;
y=sin(x);z=cos(x);
plot(x,y,':
',x,z,'-.')
运行结果如下图所示
曲线颜色
yyellow(黄色)
mmagenta(品红)
ccyan(青)天兰
rred(红)
ggreen(绿)
bblue(兰)
wwhite(白)
kblack(黑)
例如:
x=0:
0.02:
2*pi;
y=sin(x);z=cos(x);
plot(x,y,'c',x,z,'r')
运行结果如下图所示:
曲线标记
·point(点)
Xx-mark(叉号)
Ocircle(圆_字母O)
+plus(加号)
*star(星号)
ssquare(方块)
ddiamond(点)
vtriangle(down)(下三角)
^triangle(up)(上三角)
>triangle(right)(右三角)
ppentagram(空心五角星)
hhexagram(空心六角星)
x=0:
0.2:
2*pi;
y1=sin(x);y2=cos(x);y3=sqrt(x);
holdon
plot(x,y1,'.')
plot(x,y2,'s')
plot(x,y3,'^')
运行结果如下图所示:
实际上,可以同时指定曲线的颜色、标记和线型。
例如:
x=0:
0.2:
2*pi;
y1=sin(x);
y2=cos(x);
y3=sqrt(x);
holdon
plot(x,y1,'bp-')
plot(x,y2,'rh--')
plot(x,y3,'g^')
运行结果如下图所示:
3.1.2坐标网格、标注和图例说明
1、坐标网格
gridon在当前图中加网格线
gridoff去掉当前图中的网络线
2、标注
title(字符串)
功能:
当前坐标系顶部加标题
xlabel(字符串)
功能:
当前坐标系x轴旁加标题(下方)
ylabel(字符串)
功能:
当前坐标系y轴旁加标题(左侧)
text(x,y,字符串)
功能:
当前坐标系指定位置处加文本
gtext(字符串)
功能:
在鼠标单击处加文本
3、图例说明
legend(字符串1,字符串2,…)
功能:
在当前图形内建立一图例说明框,框内显示各字符串。
并且图形的曲线与字符串依次对应,可用鼠标拖动图例框改变其位置。
legendoff
功能:
删掉图例说明框
例如:
x=linspace(0,2*pi);
y=sin(x);z=cos(x);
plot(x,y,'b:
',x,z,'m+')
xlabel('变量X')
ylabel('函数Y、Z')
title('正弦与余弦曲线')
gridon
text(3.3,0.1,'sin(x)')
%gtext('cosx')本命令要用鼠标,在Notebook中不能用
legend('sin(x)','cos(x)')
运行结果如下图所示:
3.1.3坐标轴的形式和刻度
在缺省状态下,坐标轴自动显示、自动刻度、且为笛卡儿直角坐标系。
MATLAB中有以下对坐标轴操作的命令:
axis([Xmin,Xmax,Ymin,Ymax])
功能:
设定坐标范围
v=axis
功能:
获取当前坐标范围,存入v中(v为行向量[Xmin,Xmax,Ymin,Ymax])
axis('auto')
功能:
恢复缺省坐标设置
axis('xy')
功能:
使用笛卡儿坐标轴(即缺省)
axis('ij')
功能:
使用矩阵坐标轴()
axis(‘square’)
功能:
显示矩形坐标框
axis(‘equal’)
功能:
使各坐标轴刻度增量相同
axis(‘normal’)
功能:
使以上两个命令失效
axis(‘off’)
功能:
隐去坐标轴
axis(‘on’)
功能:
显示坐标轴
[s1,s2,s3]=axis(‘state’)
返回当前坐标轴的属性:
s1:
‘anto’—自动刻度
‘manual’—人工刻度
s2:
‘on’—显示坐标轴
‘off’—隐去坐标轴
s3:
‘xy’—笛卡儿坐标轴
‘ij’—矩阵坐标轴
例如:
x=linspace(0,2*pi);
y=sin(x);z=cos(x);
plot(x,y,'b:
',x,z,'k--')
axis('off')
gridoff
xlabel('变量X')
ylabel('函数Y、Z')
title('正弦与余弦曲线')
text(2.5,0.7,'sin(x)')
text(4.8,0.7,'cos(x)')
legend('sin(x)','cos(x)')
运行结果如下图所示:
3.1.4图形窗口操作
1、创建图形窗口
figure
功能:
创建一个新的图形窗口。
在第一个绘图命令运行后,将自动创建名为"FigureNo.1"的图形窗口,后续的绘图命令均是在该窗口中作用的。
figure命令,将顺序地创建"FigureNo.2"、"FigureNo.3"、…等图形窗口,但是,如若"FigureNo.1"不存在,则创建该窗口。
2、创建或选择第n个图形窗口
figure(n)
功能:
选择第n个图形窗口为当前窗口,若该窗口不存在,则创建它。
3、子坐标系统
在同一图形窗口中,可以创建n个子坐标系统,并指定其中之一为当前坐标系统。
subplot(m,n,p)
将当前窗口划分为m×n个子坐标系统,并选择其中第p个坐系统为当前坐标系统。
各子坐标系统按行排序,编号分别为1,2,…,m×n。
特别地subplot(1,1,1)将删除所有子坐标系统而生成一个占满窗口的坐标系统。
例如:
x=linspace(0,2*pi,30);
y=sin(x);z=cos(x);
a=2*sin(x).*cos(x);
b=sin(x)./(cos(x)+eps);
subplot(2,2,1)
plot(x,y)
axis([0,2*pi,-1,1])
title('sin(x)')
subplot(2,2,2)
plot(x,z)
axis([0,2*pi,-1,1])
title('cos(x)')
subplot(2,2,3)
plot(x,a)
axis([0,2*pi,-1,1])
title('2sin(x)cos(x)')
subplot(2,2,4)
plot(x,b)
axis([0,2*pi,-20,20])
title('sin(x)/cos(x)')
运行结果如下图所示:
4、图形重叠绘制
holdon
功能:
保留当前图形及其坐标轴,允许后续图形附加到原图上。
holdoff
功能:
其后的绘图命令将抹掉原图而重新绘制(缺省设置)
hold
功能:
on与off的状态切换
5、图形缩放
zoomon
功能:
使当前图形窗口的图形可放缩。
在此状态下,单击右键放大,单击右键缩小,直至恢复原大小。
或者拖动出一个矩形框而放大。
注意:
本命令与legend命令均可拖动鼠标,应互斥使用。
zoomoff
功能:
关闭放缩状态
zoom
功能:
切换on与off状态
3.1.5其它二维图形命令
1、坐标轴刻度改变后的绘图命令(用法与plot同)
loglog(x,y)
功能:
x,y轴均采用对数刻度绘制图形
semilogx(x,y)
功能:
仅x轴采用对数刻度,y轴仍采用线性刻度
semilogy(x,y)
功能:
仅y轴采用对数刻度,x轴仍采用线性刻度
2、特殊图形绘制命令
bar(x,y)
功能:
绘制条状图
例如:
x=-2.9:
0.2:
2.9;
y=exp(-x.*x);
bar(x,y);
title('BarchartofaBellcurve');
运行结果如下图所示:
stairs(x,y)
功能:
绘制阶梯状图
例如:
x=-2.9:
0.2:
2.9;
y=exp(-x.*x);
stairs(x,y);
title('StairschartofaBellcurve');
运行结果如下图所示:
stem(x,y)
功能:
绘制火柴杆状图
例如:
x=0:
0.2:
4*pi;
y=exp(-0.3*x).*sin(x);
stem(x,y);
title('Stemplot');
运行结果如下图所示:
hist(x,y)
功能:
绘制在y的每个分量附近x中的元素出现的频数直方图
例如:
x=-2.9:
0.2:
2.9;
y=randn(5000,1);
hist(y,x);%统计y所出现的频数图
title('Histogramofrandomdata');
运行结果如下图所示:
errorbar(x,y,e)
功能:
函数y=f(x)在x各分量处的误差条状图
例如:
x=0:
0.2:
2*pi;
y=sin(x);
e=rand(size(x))/5;%随机误差值
errorbar(x,y,e);
title('Errorbarplot');
运行结果如下图所示:
3、极坐标下的曲线绘制
polar(θ,ρ)
功能:
在θ的范围内ρ的曲线图
例如:
t=0:
0.1:
8*pi;
r=2*sin(t/2);
polar(t,r);
title('双心脏线');
运行结果如下图所示:
4、玫瑰图
rose(v)
功能:
在极坐标中将[0,2π]等分20份,以极轴表示v在不同分量处频率的扇形玫瑰图
rose(v,n)
功能:
将[0,2π]等分n份,绘制v中元素在不同分量处频率的玫瑰图
v=randn(100,1)*pi;
rose(v);
title('玫瑰图');
运行结果如下图所示:
5、二维函数专用命令
fplot(fname,lims,marker,tol)
功能:
绘制fname所包含二维函数的曲线
其中:
fname—函数字符串向量
lims—自变量取值区值,形为[Xmin,
Xmax]或[Xmin,Xmax,Ymin,Ymax]
marker—绘制曲线所用标记,缺省为
‘-’。
可接受的标记还有:
‘-+’、‘-×’、‘-0’、‘-*’。
tol—相对误差上限,缺省为2*10–3.
x的最大数为
。
marker和tol可以省略。
[x,y]=fplot(fname,lims,…)
功能:
将返回绘图时所用的向量x和相应y。
如:
fplot(‘[sin(x),cos(x)]’,[0,4*pi])
fplot('tan(sin(x))-sin(tan(x))'
[0,4*pi])
fplot(‘sin(x)’,[0,4*pi],‘0’)
这种自适应绘图一般绘图质量较好,但速度稍慢。
此外,ezplot(fname,lims)也有类似功能。
6、拓扑关系绘图命令
gplot(A,xy,lc)
其中:
A为一个图G的邻接矩阵,即若a(i,j)非0,则从结点i到结点j有一条边,但A未必为方阵。
xy为一个n×2的矩阵,表示各结点的位置。
即xy(i,:
)=[x(i),y(i)]
lc为线型和颜色,缺省为‘r–’,其指明方式与plot命令相同。
例如:
a=[0,1,0,1,0;
1,0,0,0,1;
0,0,0,0,1;
1,1,0,0,0;
0,1,1,0,0];
xy=[1,5;
4,7.4;
6,3.5;
5,2;
2,3];
gplot(a,xy)
text(1.1,5,'1')
text(4,7.4,'2')
text(5.9,3.6,'3')
text(5.1,2.1,'4')
text(2,2.8,'5')
运行结果如下图所示:
7、填充多边形命令
fill(x,y,c)
功能:
填充由点(x1,y1),(x2,y2),…,(xn,yn)构成的多边形,其颜色由c指明。
例如:
x=1:
5;
y=[0,-1,1,-1,0];
fill(x,y,'r')
运行结果如下图所示:
8、区域填充命令
area(x,y,'属性名1',属性值1,…)
功能:
对x、y界定的区域填充,并对各属性设置对应属性值。
例如:
t=linspace(0,2*pi,14);
x=sin(2*t);
y=cos(2*t);
area(x,y,'facecolor','r')
运行结果如下图所示:
9、对比绘图命令
plotyy(x1,y1,x2,y2)
功能:
在同一坐标系中使用不同坐标绘制两个图形
例如:
x=-2*pi:
pi/10:
2*pi;
y=sin(x);
z=2*abs(cos(x));
subplot(2,1,1)
plot(x,y,x,z)
title('按相同坐标刻度绘制两个图形')
subplot(2,1,2)
plotyy(x,y,x,z,'plot','semilogy')
title('按不同坐标刻度绘制两个图形')
运行结果如下图所示:
10、带状图绘制命令
ribbon(x,y,c)
功能:
绘制三维带状图
例如:
x=-2*pi:
pi/30:
2*pi;
y=sin(x);
ribbon(x,y,'b')
运行结果如下图所示:
在MATLAB中,还有一些其它二维绘图命令,如pie(饼图)、barh(二维水平条状图)等。
即使这里介绍的命令,也有其它不同的形式,请大家自学。
3.2.2曲面网线图和表面图
1、曲面的彩色网线图
如果已知n维的向量x和m维的向量y及相应的二元函数z=f(x,y)的离散值zij=f(xj,yi)(其中:
I=1,2,…,m,j=1,
2,…,n),则绘制二元函数空间曲面网线图
的基本步骤如下:
1)生成网格结点矩阵X和Y:
[X,Y]=meshgrid(x,y)
其中:
X为m×n的矩阵,其每一行都是x向量的复制,而Y也为m×n矩阵,其每列均为y向量的复制。
2)由X,Y计算函数值矩阵Z
3)使用命令mesh绘制曲面网线彩图
mesh(X,Y,Z)
绘制由X,Y,Z决定的网线图,图中以(Xij,Yij,Zij)作为结点,结点间互连,网线颜色随Z值大小而变化。
mesh(x,y,Z)
绘制由向量x,y和矩阵Z决定的网线图,网线结点为(xj,yi,Zij)。
mesh(Z)
绘制由(1:
n,1:
m,Z)决定的网线图。
网线结点为(i,j,Zij)
例如:
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;
mesh(X,Y,Z)
title('阔边帽网线图')
运行结果如下:
2、曲面彩色图形
如果已知x和y,并已生成了网络点矩阵X,Y,以及函数值矩阵Z(方法与曲面网线图一样),则要绘制曲面彩色图形可使用如下命
令:
1)surf(X,Y,Z,C)
其中:
c指定表面色彩,缺省为c=Z,即按Z值(高度)填充各图块。
2)surf(x,y,Z)
3)surf(Z)
例如:
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)
title('阔边帽网线图')
运行结果如下:
3、平面等值线图
如果已知x,y并已生成了网格点矩阵X和Y,以及函数值矩阵Z(方法与曲面网线图一样),则要绘制以Z为高程值,以x,y为模纵坐标的平面等值线图,可使用如下命令:
1)contour(X,Y,Z)
2)contour(X,Y,Z,n)
其中:
n为等值线条数,缺省值为10。
3)contour(X,Y,Z,v)
以向量v中的值绘制相应等值线,等值线条线为length(v)。
4)contour(Z)
以Z下标为横纵坐标值绘等值线。
5)contour(Z,n)
6)contour(Z,v)
7)[C,H]=contour(…)
将Z值送入C中,并把每条等值线的图形句柄送入H,以便控制其线型、颜色、线宽等。
例如:
[X,Y,Z]=peaks;
contour(X,Y,Z)
title('PEAKS函数的等值线图
(1)')
pause
contour(X,Y,Z,10)
title('PEAKS函数的等值线图
(2)')
pause
contour(X,Y,Z,[35710])
title('PEAKS函数的等值线图(3)')
pause
contour(Z)
title('PEAKS函数的等值线图(4)')
pause
contour(Z,10)
title('PEAKS函数的等值线图(5)')
运行结果如下:
4、三维等值线的绘制
当网线矩阵X,Y已知,并已计算出相应函数值矩阵Z后,可使用下述命令绘制三维等值线图:
1)contour3(Z)
2)contour3(Z,n)
其中:
n缺省为10
3)contour3(X,Y,Z)
4)contour3(X,Y,Z,n)
5)[C,H]=contour3(…)
6)contour3(X,Y,Z,v)
各项含义同contour命令。
例如:
z=peaks;
contour3(z)
pause
contour3(z,20)
运行结果如下:
5、二元函数的伪彩色图(等值线)
即用颜色表示平面图表中二元函数值的大小(高度)、方法如下:
1)首先指定颜色集
pcolor(X,Y,Z)
表示在由X,Y构造的平面上,用Z的元素确定相应小格子的颜色。
pcolor(Z)
表示在由Z的下标值构造的平面上,用Z的元素确定相应小格子的颜色。
2)使用命Shading令控制着色模式
Shadingflat|interp|faceted
缺省为faceted,即着色网格并附加黑色网线。
若为flat,无网线,且