Matlab---绘图及其位置摆放
【@WP@20180509】
一、绘图函数
(1)绘制二维图形
(1.1) plot( ) 函数的应用格式。
1,plot(x)。 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线。
例如:
x=0:pi/20:2*pi;
y1=sin(x);
plot(x,y1);
2, plot(x,y) 。以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。
3, plot(x,y1,x,y2,…) 。以公共的x 元素为横坐标值,以y1,y2,… 元素为纵坐标值绘制多条曲线。
例如:
x=0:pi/20:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,x,y2);
4,plot(x1,y1,x2,y2,…,xn,yn)。含多个输入参数。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
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
>> plot(A)
例,用不同的线型和颜色在同一坐标内绘制曲线 及其包络线。
>> 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,第三组用红色五角星离散标出数据点。
另外,Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。除了坐标轴信息外还可以添加其它的信息,如所画曲线的信息等,测试代码如下
x=0:pi/20:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,x,y2);
grid on %可以在画的图像中添加栅格,用命令grid on,这样可以方便你对齐某条线或是对比比较方便,
xlabel(\'变量 X\') %添加坐标轴信息,这样做可以很快的让人明白你在做什么
ylabel(\'变量 Y1 & Y2\')
title(\'正弦余弦波形\') %添加图像标题
text(1.5,0.3,\'cos(x)\') %将cosx这个注解加到坐标中的某个位置
gtext(\'sin(x)\') % 用鼠标的光标定位,将sinx这个注解放在你鼠标点击的地方
(1.2) plotyy( )函数的应用格式。
在Matlab中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy函数,它能把具有不同量纲,不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析。使用格式为:plotyy(x1,y1,x2,y2)
x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左边的对应x1,y1数据对,右边的对应x2,y2。
(1.3)其他形式的二维绘图。
1. 其他形式的线性直角坐标图
在线性直角坐标中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别为:
bar(x,y,选项)。选项在单引号中。
stairs(x,y,选项)
stem(x,y,选项)
fill(x1,y1,选项1,x2,y2,选项2,…)
前三个函数和plot的用法相似,只是没有多输入变量形式。fill函数按向量元素下标渐增次序依次用直线段连接x,y对应元素定义的数据点。
例:分别以条形图、填充图、阶梯图和杆图形式绘制曲线
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. 其他形式的二维图形
(2)绘制三维图形
(2.1)三维空间xyz面
最基本的三维图形函数为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对应列元素绘制三维曲线,曲线条数等于矩阵的列数。
例,绘制空间曲线
该曲线对应的参数方程为
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;
(2.2)三维曲面
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矩阵,然后绘制三维曲线。
例,用三维曲面图表现函数 :
为了便于分析三维曲面的各种特征,下面画出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’)所绘制的曲面的特征。
例,绘制两个直径相等的圆管相交的图形。
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
title (\'两个等直径圆管的交线\');
hold off
例,分析由函数 构成的曲面形状与平面z=a的交线。
此外,还有两个和mesh函数相似的函数,即带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz,其用法和mesh类似。不同的是,meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。
surf函数也有两个类似的函数,即具有等高线的曲面函数surfc和具有光照效果的曲面函数surfl。
例, 在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*pi; R=sin(t); cylinder(R,30);生成一个正弦圆柱面。
另外Matlab还提供了一个peaks函数,称为多峰函数,常用于三维曲面的演示。该函数可以用来生成绘图数据矩阵,矩阵元素由函数:
在矩形区域[-3 3]×[-3 3]的等分网格点上的函数值确定。如:z=peaks(30)
将生成一个30×30矩阵,
例,绘制标准三维曲面图形
t=0:pi/20:2*pi;
[x,y,z]=cylinder(2+sin(t),30);
subplot(1,3,1);
surf(x,y,z);
subplot(1,3,2);
[x,y,z]=sphere;
surf(x,y,z);
subplot(1,3,3);
[x,y,z]=peaks(30);
meshz(x,y,z);
4.其他三维图形。
在介绍二维图形时,曾经提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,其函数分别为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函数绘制三维饼图,常用格式为:
pie3(x)
x为向量,用x中的数据绘制一个三维饼图。
fill3函数可在三维空间内绘制出填充过的多边形,常用格式为:
fill3(x,y,z,c)
用x,y,z做多边形的顶点,而c指定了填充的颜色。
例,绘制三维图形。
1绘制魔方阵的三维条形图2以三维杆图形式绘制曲线y=2sinx 3已知x =[2347,1827,2043,3025] ,绘制三维饼图 4用随机的顶点坐标值画出5个黄色三角形
subplot(2,2,1);
bar3(magic(4));
subplot(2,2,2);
y=2*sin(0:pi/10:2*pi);
stem3(y);
subplot(2,2,3);
pie3([2347,1827,2043,3025]);
subplot(2,2,4);
fill3(rand(3,5),rand(3,5),rand(3,5),\'y\');
除了上面讨论的三维图形外,常用的图形还有瀑布图和三维曲面的等高线图。绘制瀑布图用waterfall函数,用法和meshz函数相似,只是它的网格线在x轴方向出现,具有瀑布效果。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。
例, 绘制多峰函数的瀑布图和等高线图。
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\');
(2.3)三维图形的精细处理
1.视点处理
在日常生活中,从不同的角度观察物体,所看到的物体形状是不一样的。同样,从不同视点绘制的三维图形的形状也是不一样的。视点位置可由方位角和仰角表示。
方位角
Matlab提供了设置视点的函数view,其调用格式为:
view(az,el)
其中az为方位角,el为仰角,它们均以度为单位。系统默认的视点定义为方位角为-37.5度,仰角30度。
例, 从不同视点绘制多峰函数曲面。
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\');
2.色彩处理
3.图形的裁剪处理
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);
例524 绘制两个球面,其中一个在另一个里面,将外面的球裁掉一部分,以便能看到里面的球。
[x,y,z]=sphere(25);
%生成外面的大球
z1=z;
z1(:,1:4)=NaN;%将大球裁去一部分
c1=ones(size(z1));
surf(3*x,3*y,3*z1,c1); %生成里面的小球
hold on
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([0 1 0;0.5 0 0;1 0 0]);
grid on
hold off
色图中使用三种颜色,外面的球是绿色,里面的球采用深浅不同的两种红色。
4.隐函数作图
如果给定了函数的显式表达式,可以先设置自变量向量,然后根据表达式计算函数向量,从而用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)图形。
例, 隐函数绘图举例。
subplot(2,2,1);
ezplot(\'x^2+y^2-9\');axis equal;
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。
转自https://blog.csdn.net/liuheda/article/details/52972323
二、图形位置显示
《matlab怎么在一个图形窗口中画多个图形》把多个图形画在一起,有两种情况:1,画在同一坐标系中。2,画在不同坐标系中。
1,画在同一坐标系中hold on。
hold on,将多幅图的曲线绘制在同一个图形上,这样就使得第二个plot图像合并到第一个plot的图像上。hold on必须在绘图命令之后,而不能直接接在figure之后。否则在绘制特殊坐标的时候,仍然显示的是直角坐标。
注意:
grid on是打开网格
grid off是关闭网格
而grid是切换两种状态,如果在grid off的状态下,输入grid,相当于grid on
相反,如果在grid on状态下输入grid 等价于grid off
例子1,
x=linspace(0,8);
y1=sin(x);
y2=(cos(x)).^2;
%figure
plot(x,y1);
hold on
plot(x,y2);
%plot(x,y1,x,y2);
%grid on
说明:figure表示新建一个图窗口,以免后续的绘图语句覆盖原图;hold on表示在原图的基础上绘制新的图像
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
clc clear all close all tic n = 10; % 数据点数 x = 1:n; % 横坐标 y1 = randi(10, 1, n); % 纵坐标 y2 = randi(10, 1, n); % 纵坐标 figure plot(x, y1); figure % 想要看hold on的效果,请将改行注释掉,并取消下一行的注释 % hold on plot(x, y2, \'r\' ); toc |
用figure的效果图:生成两张图
用hold on的效果:两条曲线画在一张图上
meshgrid用来生成网格矩阵,简单地讲,就是把给定的x和y中元素的两两组合都生成出来,这样每一对(x,y)再计算一个对应的z,显然这样得到的是一个z的曲面。但该语句不是必须的,有时候我们只想获得一条三维曲线而已,并不想知道所有x, y元素两两组合的结果是什么,组合我们已经定义好了
参考代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
clc clear all close all tic n = 10; x = 1:n; % x坐标 y = 1:n; % y坐标 %% % meshgrid演示 [X, Y] = meshgrid(x, y); % meshgrid 函数用来生成网格矩阵 Z = X.^2 + Y; figure mesh(X, Y, Z); grid on xlabel( \'x\' ); ylabel( \'y\' ); zlabel( \'z\' ); %% % 不用meshgrid的情况 z = x.^2 + y; figure % mesh(x, y, z); % 没有meshgrid生成底面矩阵时,该句出错 plot3(x, y, z); % 一组(x, y)对应一个z值,因此x和y元素个数必须一致 grid on xlabel( \'x\' ); ylabel( \'y\' ); zlabel( \'z\' ); toc |
效果图
2,画在不同坐标系中subplot(n,m,s) 。
n:图像行数,m:图形列数,s:第几个图形。如subplot(2,3,1),表示画两行两列(即4个图形)中的第一个图形。
例子1,
I = imread(\'000.jpg\');
subplot(2,2,1); imshow(I);
subplot(2,2,2); imshow(I);
subplot(2,2,3:4); imshow(I);
例子2,
t = 0:.1:2*pi;
y = sin(t).*cos(t);
subplot(2,2,1); plot(t,y);
subplot(2,2,2); plot(t,y.^2);
subplot(2,2,3:4); plot(t,y.^3);
例子3,摆成3排。
subplot(3,1,1);plot(x);
subplot(3,1,2);plot(y);
subplot(3,1,3);plot(z);
画好后需要添加坐标轴名称和标题:
先点击某个图,再点insert,即可设置。
三,绘制图形的辅助操作
绘制完图形以后,可能还需要对图形进行一些辅助操作,以使图形意义更加明确,可读性更强。
1. 图形标注
在绘制图形时,可以对图形加上一些说明,如图形的名称、坐标轴说明以及图形某一部分的含义等,这些操作称为添加图形标注。有关图形标注函数的调用格式为:
title(’图形名称’) (都放在单引号内)
xlabel(’x轴说明’)
ylabel(’y轴说明’)
text(x,y,’图形说明’)
legend(’图例1’,’图例2’,…)
其中,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})’)
将得到标注效果 。
标识符 |
符号 |
标识符 |
符号 |
标识符 |
符号 |
/alpha |
|
/epsilon |
|
/infty |
|
/beta |
|
/eta |
|
/int |
|
/gamma |
|
/Gamma |
|
/partial |
|
/delta |
|
/Delta |
|
/leftarrow |
|
/theta |
|
/Theta |
|
/rightarrow |
|
/lambda |
|
/Lambda |
|
/downarrow |
|
/xi |
|
/Xi |
|
/uparrow |
|
/pi |
|
/Pi |
|
/div |
|
/omega |
|
/Omega |
|
/times |
|
/sigma |
|
/Sigma |
|
/pm |
|
/phi |
|
/Phi |
|
/leq |
|
/psi |
|
/Psi |
|
/geq |
|
/rho |
|
/tau |
|
/neq |
|
/mu |
|
/zeta |
|
/forall |
|
/nu |
|
/chi |
|
/exists |
|
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个区为当前活动区。每一个绘图区允许以不同的坐标系单独绘制图形。
鲜花
握手
雷人
路过
鸡蛋