第 4章 MATLAB绘图
4.1 二维图形
4.2 三维图形
4.3 三维图形的精细处理
4.4 图像与动画
4.5 低层绘图操作
4.1 二维图形
4.1.1绘制二维曲线的最基本函数
1,plot函数的基本用法
plot函数的基本调用格式为:
plot(x,y)
其中 x和 y为长度相同的向量,分别用于存储 x坐标和 y坐标数据 。
例 4.1 在 0≤X≤2?区间内,绘制曲线 y=2e-0.5xsin(2πx)。
程序如下:
x=0:pi/100:2*pi;
y=2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y)
说明:
( 1) 当 x,y是同维矩阵时,则以 x,y对应列元素为横,纵坐标分别绘制曲线,曲线条数等于矩阵的列数 。
( 2) 当 x是向量,y是有一维与 x同维的矩阵时,
则绘制出多根不同色彩的曲线 。 曲线条数等于
y矩阵的另一维数,x被作为这些曲线共同的横坐标 。
( 3) plot函数最简单的调用格式是只包含一个输入参数,plot(x)。
例 4.2 某工厂 2000年各月总产值 ( 单位:万元 )
分别为 22,60,88,95,56,23,9,10,14、
81,56,23,试绘制折线图以显示出该厂总产值的变化情况 。
程序如下:
p=[22,60,88,95,56,23,9,10,14,81,56,23];
plot(p)
2,含多个输入参数的 plot函数含多个输入参数的 plot函数调用格式为:
plot(x1,y1,x2,y2,…,xn,yn)
3,含选项的 plot函数含选项的 plot函数调用格式为:
plot(x1,y1,选项 1,x2,y2,选项 2,…,xn,yn,选项 n)
例 4.3 用不同线型和颜色在同一坐标内绘制曲线 y=2e-0.5xsin(2πx)及其包络线。
程序如下:
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,'g:',x,y2,'b--',x1,y3,'rp');
4.双纵坐标函数 plotyy
plotyy函数是 MATLAB 5.X新增的函数。
它能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为:
plotyy(x1,y1,x2,y2)
其中 x1—y1对应一条曲线,x2—y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于 x1—y1数据对,
右纵坐标用于 x2—y2数据对。
例 4.4 用不同标度在同一坐标内绘制曲线
y1=e-0.5xsin(2πx)及曲线 y2=1.5e-0.1xsin(x)。
程序如下:
x1=0:pi/100:2*pi;
x2=0:pi/100:3*pi;
y1=exp(-0.5*x1).*sin(2*pi*x1);
y2=1.5*exp(-0.1*x2).*sin(x2);
plotyy(x1,y1,x2,y2);
4.1.2 绘制图形的辅助操作
1,图形标注有关图形标注函数的调用格式为:
title(图形名称 )
xlabel(x轴说明 )
ylabel(y轴说明 )
text(x,y,图形说明 )
legend(图例 1,图例 2,… )
例 4.5 给图形添加图形标注。
程序如下:
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,'g:',x,y2,'b--',x1,y3,'rp');
title('曲线及其包络线 '); %加图形标题
xlabel('independent variable X'); %加 X轴说明
ylabel('independent variable Y'); %加 Y轴说明
text(2.8,0.5,'包络线 '); %在指定位置添加图形说明
text(0.5,0.5,'曲线 y');
text(1.4,0.1,'离散数据点 ');
legend('包络线 ','包络线 ','曲线 y','离散数据点 ') %加图例
2,坐标控制函数的调用格式为:
axis([xmin xmax ymin ymax zmin zmax])
axis函数功能丰富,常用的用法还有:
axis equal 纵,横坐标轴采用等长刻度
axis square 产生正方形坐标系 (缺省为矩形 )
axis auto 使用缺省设置
axis off 取消坐标轴
axis on 显示坐标轴
grid on/off命令控制是画还是不画网格线,不带参数的 grid命令在两种状态之间进行切换 。
box on/off命令控制是加还是不加边框线,不带参数的 box命令在两种状态之间进行切换 。
例 4.6 用图形保持功能在同一坐标内绘制曲线
y=2e-0.5xsin(2πx)及其包络线,并加网格线。
程序如下:
x=(0:pi/100:2*pi)';
y1=2*exp(-0.5*x)*[1,-1];y2=2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y1,'b:');
axis([0,2*pi,-2,2]); %设置坐标
hold on; %设置图形保持状态
plot(x,y2,'k');
grid on; %加网格线
box off; %不加坐标边框
hold off; %关闭图形保持
3,图形窗口的分割
subplot函数的调用格式为:
subplot(m,n,p)
例 4.7 在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。
程序如下:
x=linspace(0,2*pi,60);
y=sin(x);z=cos(x);
t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps);
subplot(2,2,1);
plot(x,y);title('sin(x)');axis ([0,2*pi,-1,1]);
subplot(2,2,2);
plot(x,z);title('cos(x)');axis ([0,2*pi,–1,1]);
subplot(2,2,3);
plot(x,t);title('tangent(x)');axis ([0,2*pi,-40,40]);
subplot(2,2,4);
plot(x,ct);title('cotangent(x)');axis ([0,2*pi,-40,40]);
对图形窗口灵活分割 。 请看下面的程序 。
x=linspace(0,2*pi,60);
y=sin(x);z=cos(x);
t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps);
subplot(2,2,1); %选择 2× 2个区中的 1号区
stairs(x,y);title('sin(x)-1');axis ([0,2*pi,-1,1]);
subplot(2,1,2); %选择 2× 1个区中的 2号区
stem(x,y);title('sin(x)-2');axis ([0,2*pi,-1,1]);
subplot(4,4,3); %选择 4× 4个区中的 3号区
plot(x,y);title('sin(x)');axis ([0,2*pi,-1,1]);
subplot(4,4,4); %选择 4× 4个区中的 4号区
plot(x,z);title('cos(x)');axis ([0,2*pi,-1,1]);
subplot(4,4,7); %选择 4× 4个区中的 7号区
plot(x,t);title('tangent(x)');axis ([0,2*pi,-40,40]);
subplot(4,4,8); %选择 4× 4个区中的 8号区
plot(x,ct);title('cotangent(x)');axis ([0,2*pi,-40,40]);
4.1.3 绘制二维图形的其他函数
1,其他形式的线性直角坐标图在线性直角坐标系中,其他形式的图形有条形图,阶梯图,杆图和填充图等,所采用的函数分别是:
bar(x,y,选项 )
stairs(x,y,选项 )
stem(x,y,选项 )
fill(x1,y1,选项 1,x2,y2,选项 2,… )
例 4.8 分别以条形图,填充图,阶梯图和杆图形式绘制曲线 y=2e-0.5x。
程序如下:
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函数相似 。
例 4.9 绘制 ρ=sin(2θ)cos(2θ)的极坐标图 。
程序如下:
theta=0:0.01:2*pi;
rho=sin(2*theta).*cos(2*theta);
polar(theta,rho,'k');
3,对数坐标图形
MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为:
semilogx(x1,y1,选项 1,x2,y2,选项 2,… )
semilogy(x1,y1,选项 1,x2,y2,选项 2,… )
loglog(x1,y1,选项 1,x2,y2,选项 2,… )
例 4.10 绘制 y=10x2的对数坐标图并与直角线性坐标图进行比较 。
程序如下:
x=0:0.1:10;
y=10*x.*x;
subplot(2,2,1);plot(x,y);title('plot(x,y)');grid on;
subplot(2,2,2);semilogx(x,y);title('semilogx(x,y)');grid on;
subplot(2,2,3);semilogy(x,y);title('semilogy(x,y)');grid on;
subplot(2,2,4);loglog(x,y);title('loglog(x,y)');grid on;
4,对函数自适应采样的绘图函数
fplot函数的调用格式为:
fplot(fname,lims,tol,选项 )
例 4.11 用 fplot函数绘制 f(x)=cos(tan(πx))的曲线 。
先建立函数文件 myf.m:
function y=myf(x)
y=cos(tan(pi*x));
再用 fplot函数绘制 myf.m函数的曲线:
fplot('myf',[-0.4,1.4],1e-4)
5,其他形式的图形
MATLAB提供的绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图,复数的相量图等等 。
例 4.12 绘制图形:
(1)某次考试优秀,良好,中等,及格,不及格的人数分别为,7,17,23,19,5,试用饼图作成绩统计分析 。
(2)绘制复数的相量图,3+2i,4.5-i和 -1.5+5i。
程序如下:
subplot(1,2,1);
pie([7,17,23,19,5]);
title('饼图 ');legend('优秀 ','良好 ','中等 ','及格 ','不及格 ');
subplot(1,2,2);
compass([3+2i,4.5-i,-1.5+5i]);title('相量图 ');
4.2 三维图形
4.2.1绘制三维曲线的最基本函数
plot3函数与 plot函数用法十分相似,其调用格式为:
plot3(x1,y1,z1,选项 1,x2,y2,z2,选项 2,…,xn,yn,zn,选项 n)
例 4.13 绘制空间曲线 。
程序如下:
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;
4.2.2 三维曲面
1,平面网格坐标矩阵的生成
(1)利用矩阵运算生成 。
x=a:dx:b; y=(c:dy:d)';
X=ones(size(y))*x;
Y=y*ones(size(x));
(2)利用 meshgrid函数生成 。
x=a:dx:b; y=c:dy:d;
[X,Y]=meshgrid(x,y);
例 4.14 已知 6<x<30,15<y<36,求不定方程
2x+5y=126的整数解 。
程序如下:
x=5:29; y=14:35;
[x,y]=meshgrid(x,y); %在 [5,29]× [14,35]区域生成网格坐标
z=2*x+5*y;
k=find(z==126); %找出解的位置
x(k),y(k) %输出对应位置的 x,y即方程的解
2,绘制三维曲面的函数
surf函数和 mesh函数的调用格式为:
mesh(x,y,z,c)
surf(x,y,z,c)
例 4.15 用三维曲面图表现函数 z=sin(y)cos(x)。
程序 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');
程序 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');
程序 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;
例 4.16 分析由函数 z=x2-2y2构成的曲面形状及与平面
z=a的交线 。
程序如下:
[x,y]=meshgrid(-10:0.2:10);
z1=(x.^2-2*y.^2)+eps; %第 1个曲面
a=input('a=?'); z2=a*ones(size(x)); %第 2个曲面
subplot(1,2,1);mesh(x,y,z1);hold on;mesh(x,y,z2); %分别画出两个曲面
v=[-10,10,-10,10,-100,100];axis(v);grid; %第 1子图的坐标设置
hold off;
r0=abs(z1-z2)<=1; %求两曲面 z坐标差小于 1的点
xx=r0.*x; yy=r0.*y; zz=r0.*z2; %求这些点上的 x,y,z坐标,即交线坐标
subplot(1,2,2);
plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'*'); %在第 2子图画出交线
axis(v);grid; %第 2子图的坐标设置
3,标准三维曲面
sphere函数的调用格式为:
[x,y,z]=sphere(n)
cylinder函数的调用格式为:
[x,y,z]=sphere(R,n)
MATLAB还有一个 peaks 函数,称为多峰函数,
常用于三维曲面的演示 。
4.2.3 其他三维图形条形图,饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是 bar3,pie3
和 fill3。 此外,还有三维曲面的等高线图 。 等高线图分二维和三维两种形式,分别使用函数
contour和 contour3绘制 。
例 4.17 绘制多峰函数的等高线图 。
程序如下:
[x,y,z]=peaks;
contour3(x,y,z,12,'k'); %其中 12代表高度的等级数
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
title('contour3 of peaks');
4.3 三维图形的精细处理
4.3.1 图形的裁剪处理
MATLAB定义的 NaN常数可以用于表示那些不可使用的数据,利用这种特性,可以将图形中需要裁剪部分对应的函数值设置成 NaN,这样在绘制图形时,函数值为 NaN的部分将不显示出来,从而达到对图形进行裁剪的目的 。
例 4.18 裁掉例 4.15三维曲面图中 z>0.25部分 。
程序如下:
x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);
[I,J]=find(z>0.25);
for ii=1:length(I)
z(I(ii),J(ii))=NaN;
end
surf(x,y,z);
4.3.2 视点处理
MATLAB提供了设置视点的函数 view。 其调用格式为:
view(az,el)
其中 az为方位角,el为仰角,它们均以度为单位 。 系统缺省的视点定义为方位角 -
37.5°,仰角 30° 。
例 4.19 从不同视点绘制多峰函数曲面 。
程序如下:
subplot(2,2,1);mesh(peaks);
view(-37.5,30); %指定子图 1的视点
title('azimuth=-37.5,elevation=30')
subplot(2,2,2);mesh(peaks);
view(0,90); %指定子图 2的视点
title('azimuth=0,elevation=90')
subplot(2,2,3);mesh(peaks);
view(90,0); %指定子图 3的视点
title('azimuth=90,elevation=0')
subplot(2,2,4);mesh(peaks);
view(-7,-10); %指定子图 4的视点
title('azimuth=-7,elevation=-10')
4.3.3 色彩处理
1,颜色的向量表示
MATLAB除用字符表示颜色外,还可以用含有 3个元素的向量表示颜色 。
2,色图色图是 m× 3 的数值矩阵,它的每一行是 RGB三元组 。 色图矩阵可以人为地生成,也可以调用 MATLAB提供的函数来定义色图矩阵 。
除 plot及其派生函数外,mesh,surf等函数均使用色图着色 。
图形窗口色图的设置和改变,使用函数:
colormap(m)
其中 m代表色图矩阵 。
3,三维表面图形的着色三维表面图实际上就是在网格图的每一个网格片上涂上颜色 。
surf函数用缺省的着色方式对网格片着色 。 除此之外,还可以用 shading命令来改变着色方式 。
例 4.20 3种图形着色方式的效果展示 。
程序如下:
z=peaks(20);colormap(copper);
subplot(1,3,1);surf(z);
subplot(1,3,2); surf(z);shading flat;
subplot(1,3,3);surf(z);shading interp;
4.3.4 光照处理
MATLAB提供了灯光设置的函数,其调用格式为:
light('Color',选项 1,'Style',选项 2,'Position',选项 3)
例 4.21 光照处理后的多峰函数曲面 。
程序如下:
z=peaks(20);
subplot(1,2,1);surf(z);
light('Posi',[0,20,10]);shading interp;hold on;
plot3(0,20,10,'p');text(0,20,10,' light');
subplot(1,2,2);surf(z);
light('Posi',[20,0,10]);shading interp;hold on;
plot3(20,0,10,'p');text(20,0,10,' light');
4.4 图像与动画
4.4.1 图像
1,imread和 imwrite函数
imread和 imwrite函数分别用于将图像文件读入
MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件 。
2,image和 imagesc函数这两个函数用于图像显示 。 为了保证图像的显示效果,一般还应使用 colormap函数设置图像色图 。
例 4.22 在 E盘根目录下有一图像文件 building.jpg,
在图形窗口显示该图像 。
程序如下:
[x,cmap]=imread('e:\building.jpg'); %读取图像的数据阵和色图阵
image(x);colormap(cmap);
axis image off %保持宽高比并取消坐标轴
4.4.2 动画
1,getframe函数
getframe函数可截取每一幅画面信息而形成一个很大的列向量 。 该向量可保存到一个变量中 。
显然,保存 n幅图就需一个大矩阵 。
2,moviein函数
moviein(n)函数用来建立一个足够大的 n列矩阵 。
该矩阵用来保存 n幅画面的数据,以备播放 。
3,movie函数
movie(m,n)函数以每秒 n幅图形的速度播放由矩阵 m的列向量所组成的画面 。
例 4.23 播放一个直径不断变化的球体 。
程序如下
[x,y,z]=sphere(50);
m=moviein(30); %建立一个 30列大矩阵
for i=1:30
surf(i*x,i*y,i*z) %绘制球面
m(:,i)=getframe; %将球面保存到 m矩阵
end
movie(m,10); %以每秒 10幅的速度播放球面
4.5 低层绘图操作
4.5.1 图形对象及其句柄
1,图形对象
MATLAB把构成图形的各个基本要素称为图形对象 。 这些对象包括计算机屏幕,图形窗口
(Figure),坐标轴 (Axes),用户菜单 (Uimenu)、
用 户 控 件 (Uicontrol),曲线 (Line),曲面
(Surface),文字 (Text),图像 (image),光源
(Light),区域块 (Patch)和方框 (Rectangle)。 系统将每一个对象按树型结构组织起来 。 每个图形对象都可以被独立地操作 。
2,图形对象句柄
MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄 (Handle)。
句柄是图形对象的唯一标识符 。
MATLAB提供了 3个用于获取已有图形对象句柄的函数:
gcf 获取当前图形窗口的句柄 (get current figure)。
gca 获取当前坐标轴的句柄 (get current axis)。
gco 获取最近被单击的图形对象的句柄 (get current
object)。
4.5.2 图形对象属性
1,属性名与属性值
MATLAB给每种对象的每一个属性规定了一个名字,
称为属性名,而属性名的取值成为属性值 。 例如,
LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是 '-',':','-.','--'或 'none'。
2,属性的操作
set函数的调用格式为:
set(句柄,属性名 1,属性值 1,属性名 2,属性值 2,… )
get函数的调用格式为:
V=get(句柄,属性名 )
4.5.3 图形对象的创建
1,图形窗口对象建立图形窗口对象使用 figure函数 。 调用该函数的命令形式为:
句柄变量 =figure(属性名 1,属性值 1,属性名 2,
属性值 2,… )
MATLAB为每个图形窗口提供了很多属性 。 这些属性及其取值控制着图形窗口对象 。 除公共属性外,其他常用属性,MenuBar属性,Name
属性,Position属性,Color属性等 。
例 4.25 建立一个图形窗口 。 该图形窗口没有菜单条,标题名称为,图形窗口示例,,起始于屏幕左下角,宽度和高度分别为 300像素点和 150像素点,
背景颜色为绿色,且当用户从键盘按下任意一个键时,将显示,Hello,Keyboard Key Pressed.”字样 。
命令如下:
hf=figure('Color',[0,1,0],'Position',[1,1,300,150],...
'Name','图形窗口示例 ','NumberTitle','off','MenuBar','none',...
'KeyPressFcn','disp(''Hello,Keyboard Key Pressed.'')');
例 4.26 分别在 4个不同的图形窗口绘制出正弦,余弦,正切,
余切曲线 。 要求先建立一个图形窗口并绘图,然后每关闭一个再建立下一个,直到建立第 4个窗口并绘图 。
程序如下:
x=linspace(0,2*pi,60);
y=sin(x);z=cos(x);t=tan(x);ct=1./(t+eps);;
%命令组待用
C4=['figure(''Name'',''cotangent(x)'',''NumberTitle'',',...
'''off'');plot(x,ct);axis([0,2*pi,-40,40]);'];
C3=['figure(''Name'',''tangent(x)'',''DeleteFcn'',C4,',...
'''NumberTitle'',''off'');plot(x,t);axis([0,2*pi,-40,40]);'];
C2=['figure(''Name'',''cos(x)'',''DeleteFcn'',C3,',...
'''NumberTitle'',''off'');plot(x,z);axis([0,2*pi,-1,1]);'];
%先创建 1个图形窗口并绘制曲线
figure('Name','sin(x)','DeleteFcn',C2,'NumberTitle','off');
plot(x,y);axis([0,2*pi,-1,1]);
2,坐标轴对象
建立坐标轴对象使用 axes函数,调用它的命令形式为:
句柄变量 =axes(属性名 1,属性值 1,属性名 2,属性值 2,… )
MATLAB为每个坐标轴对象提供了很多属性 。 除公共属性外,还 有 其 他 常 用 属 性 。
例 4.27 利用坐标轴对象实现图形窗口的任意分割 。
程序如下:
clf; %清图形窗口
x=linspace(0,2*pi,20);y=sin(x);
axes('Posi',[0.2,0.2,0.2,0.7]);plot(y,x);title('sin(x)-1‘);
axes(’Posi‘,[0.4,0.5,0.2,0.1]);stairs(x,y);title(’sin(x)-2‘);
axes(’Posi‘,[0.55,0.6,0.25,0.3]);stem(x,y);title(’sin(x)-3‘);
axes(’Posi‘,[0.55,0.2,0.25,0.3]);stem(x,y);title(’sin(x)-4‘);
3,曲线对象建立曲线对象使用 line函数,调用它的命令形式为:
句柄变量 =line(x,y,z,属性名 1,属性值 1,属性名 2,属性值 2,… )
其中对 x,y,z的解释与高层曲线函数 plot和 plot3等一样,
其余的解释与前面介绍过的 figure和 axes函数类似 。
每个曲线对象也具有很多属性 。 除公共属性外,还有其他常用属性 。
4,文字对象使用 text函数可以根据指定位置和属性值添加文字说明,并保存句柄 。 调用该函数的命令形式为:
句柄变量 =text(x,y,z,‘说明文字 ’,属性名 1,属性值 1,属性名 2,属性值
2,… )
其中说明文字中除使用标准的 ASCII字符外,还可使用 LATEX格式的控制字符 。
除公共属性外,文字对象还有其他常用属性 。
例 4.28 利用曲线对象完成例 4.5。
程序如下:
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);
line(x,y1,'LineStyle',':','color','g');
line(x,y2,'LineStyle','--','color','b');
line(x1,y3,'LineStyle','none','Marker','p','color','r‘);
title(’曲线及其包络线 ‘ );
xlabel('independent variableX‘);
ylabel(’independentvariableY‘);
text(2.8,0.55,’2e^{-0.5x}‘,’FontSize‘,12);
text(0.45,0.55,’y=2e^{-0.5x}sin(2{\pi}x)‘,’FontSize‘,12);
text(1.4,0.1,’离散数据点 ‘ );
legend(’包络线 ‘,’包络线 ‘,’曲线 y‘,’离散数据点 ‘ )
5,曲面对象建立曲面对象使用 surface函数,调用它的命令形式为:
句柄变量 =surface(x,y,z,属性名 1,属性值 1,属性名 2,属性值 2,… )
其中对 x,y,z的解释与高层曲面函数 mesh和 surf等一样,其余的解释与前面介绍过的 figure和 axes等函数类似 。
每个曲面对象也具有很多属性 。 除公共属性外,
还有其他常用属性 。
例 4.29利用曲面对象绘制三维曲面 z=sin(y)cos(x)。
程序如下:
x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);
axes('view',[-37.5,30]);
hs=surface(x,y,z,'FaceColor','w','EdgeColor','flat');
grid on;
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
title('mesh-surf');
pause;
set(hs,'FaceColor','flat');
4.1 二维图形
4.2 三维图形
4.3 三维图形的精细处理
4.4 图像与动画
4.5 低层绘图操作
4.1 二维图形
4.1.1绘制二维曲线的最基本函数
1,plot函数的基本用法
plot函数的基本调用格式为:
plot(x,y)
其中 x和 y为长度相同的向量,分别用于存储 x坐标和 y坐标数据 。
例 4.1 在 0≤X≤2?区间内,绘制曲线 y=2e-0.5xsin(2πx)。
程序如下:
x=0:pi/100:2*pi;
y=2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y)
说明:
( 1) 当 x,y是同维矩阵时,则以 x,y对应列元素为横,纵坐标分别绘制曲线,曲线条数等于矩阵的列数 。
( 2) 当 x是向量,y是有一维与 x同维的矩阵时,
则绘制出多根不同色彩的曲线 。 曲线条数等于
y矩阵的另一维数,x被作为这些曲线共同的横坐标 。
( 3) plot函数最简单的调用格式是只包含一个输入参数,plot(x)。
例 4.2 某工厂 2000年各月总产值 ( 单位:万元 )
分别为 22,60,88,95,56,23,9,10,14、
81,56,23,试绘制折线图以显示出该厂总产值的变化情况 。
程序如下:
p=[22,60,88,95,56,23,9,10,14,81,56,23];
plot(p)
2,含多个输入参数的 plot函数含多个输入参数的 plot函数调用格式为:
plot(x1,y1,x2,y2,…,xn,yn)
3,含选项的 plot函数含选项的 plot函数调用格式为:
plot(x1,y1,选项 1,x2,y2,选项 2,…,xn,yn,选项 n)
例 4.3 用不同线型和颜色在同一坐标内绘制曲线 y=2e-0.5xsin(2πx)及其包络线。
程序如下:
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,'g:',x,y2,'b--',x1,y3,'rp');
4.双纵坐标函数 plotyy
plotyy函数是 MATLAB 5.X新增的函数。
它能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为:
plotyy(x1,y1,x2,y2)
其中 x1—y1对应一条曲线,x2—y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于 x1—y1数据对,
右纵坐标用于 x2—y2数据对。
例 4.4 用不同标度在同一坐标内绘制曲线
y1=e-0.5xsin(2πx)及曲线 y2=1.5e-0.1xsin(x)。
程序如下:
x1=0:pi/100:2*pi;
x2=0:pi/100:3*pi;
y1=exp(-0.5*x1).*sin(2*pi*x1);
y2=1.5*exp(-0.1*x2).*sin(x2);
plotyy(x1,y1,x2,y2);
4.1.2 绘制图形的辅助操作
1,图形标注有关图形标注函数的调用格式为:
title(图形名称 )
xlabel(x轴说明 )
ylabel(y轴说明 )
text(x,y,图形说明 )
legend(图例 1,图例 2,… )
例 4.5 给图形添加图形标注。
程序如下:
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,'g:',x,y2,'b--',x1,y3,'rp');
title('曲线及其包络线 '); %加图形标题
xlabel('independent variable X'); %加 X轴说明
ylabel('independent variable Y'); %加 Y轴说明
text(2.8,0.5,'包络线 '); %在指定位置添加图形说明
text(0.5,0.5,'曲线 y');
text(1.4,0.1,'离散数据点 ');
legend('包络线 ','包络线 ','曲线 y','离散数据点 ') %加图例
2,坐标控制函数的调用格式为:
axis([xmin xmax ymin ymax zmin zmax])
axis函数功能丰富,常用的用法还有:
axis equal 纵,横坐标轴采用等长刻度
axis square 产生正方形坐标系 (缺省为矩形 )
axis auto 使用缺省设置
axis off 取消坐标轴
axis on 显示坐标轴
grid on/off命令控制是画还是不画网格线,不带参数的 grid命令在两种状态之间进行切换 。
box on/off命令控制是加还是不加边框线,不带参数的 box命令在两种状态之间进行切换 。
例 4.6 用图形保持功能在同一坐标内绘制曲线
y=2e-0.5xsin(2πx)及其包络线,并加网格线。
程序如下:
x=(0:pi/100:2*pi)';
y1=2*exp(-0.5*x)*[1,-1];y2=2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y1,'b:');
axis([0,2*pi,-2,2]); %设置坐标
hold on; %设置图形保持状态
plot(x,y2,'k');
grid on; %加网格线
box off; %不加坐标边框
hold off; %关闭图形保持
3,图形窗口的分割
subplot函数的调用格式为:
subplot(m,n,p)
例 4.7 在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。
程序如下:
x=linspace(0,2*pi,60);
y=sin(x);z=cos(x);
t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps);
subplot(2,2,1);
plot(x,y);title('sin(x)');axis ([0,2*pi,-1,1]);
subplot(2,2,2);
plot(x,z);title('cos(x)');axis ([0,2*pi,–1,1]);
subplot(2,2,3);
plot(x,t);title('tangent(x)');axis ([0,2*pi,-40,40]);
subplot(2,2,4);
plot(x,ct);title('cotangent(x)');axis ([0,2*pi,-40,40]);
对图形窗口灵活分割 。 请看下面的程序 。
x=linspace(0,2*pi,60);
y=sin(x);z=cos(x);
t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps);
subplot(2,2,1); %选择 2× 2个区中的 1号区
stairs(x,y);title('sin(x)-1');axis ([0,2*pi,-1,1]);
subplot(2,1,2); %选择 2× 1个区中的 2号区
stem(x,y);title('sin(x)-2');axis ([0,2*pi,-1,1]);
subplot(4,4,3); %选择 4× 4个区中的 3号区
plot(x,y);title('sin(x)');axis ([0,2*pi,-1,1]);
subplot(4,4,4); %选择 4× 4个区中的 4号区
plot(x,z);title('cos(x)');axis ([0,2*pi,-1,1]);
subplot(4,4,7); %选择 4× 4个区中的 7号区
plot(x,t);title('tangent(x)');axis ([0,2*pi,-40,40]);
subplot(4,4,8); %选择 4× 4个区中的 8号区
plot(x,ct);title('cotangent(x)');axis ([0,2*pi,-40,40]);
4.1.3 绘制二维图形的其他函数
1,其他形式的线性直角坐标图在线性直角坐标系中,其他形式的图形有条形图,阶梯图,杆图和填充图等,所采用的函数分别是:
bar(x,y,选项 )
stairs(x,y,选项 )
stem(x,y,选项 )
fill(x1,y1,选项 1,x2,y2,选项 2,… )
例 4.8 分别以条形图,填充图,阶梯图和杆图形式绘制曲线 y=2e-0.5x。
程序如下:
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函数相似 。
例 4.9 绘制 ρ=sin(2θ)cos(2θ)的极坐标图 。
程序如下:
theta=0:0.01:2*pi;
rho=sin(2*theta).*cos(2*theta);
polar(theta,rho,'k');
3,对数坐标图形
MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为:
semilogx(x1,y1,选项 1,x2,y2,选项 2,… )
semilogy(x1,y1,选项 1,x2,y2,选项 2,… )
loglog(x1,y1,选项 1,x2,y2,选项 2,… )
例 4.10 绘制 y=10x2的对数坐标图并与直角线性坐标图进行比较 。
程序如下:
x=0:0.1:10;
y=10*x.*x;
subplot(2,2,1);plot(x,y);title('plot(x,y)');grid on;
subplot(2,2,2);semilogx(x,y);title('semilogx(x,y)');grid on;
subplot(2,2,3);semilogy(x,y);title('semilogy(x,y)');grid on;
subplot(2,2,4);loglog(x,y);title('loglog(x,y)');grid on;
4,对函数自适应采样的绘图函数
fplot函数的调用格式为:
fplot(fname,lims,tol,选项 )
例 4.11 用 fplot函数绘制 f(x)=cos(tan(πx))的曲线 。
先建立函数文件 myf.m:
function y=myf(x)
y=cos(tan(pi*x));
再用 fplot函数绘制 myf.m函数的曲线:
fplot('myf',[-0.4,1.4],1e-4)
5,其他形式的图形
MATLAB提供的绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图,复数的相量图等等 。
例 4.12 绘制图形:
(1)某次考试优秀,良好,中等,及格,不及格的人数分别为,7,17,23,19,5,试用饼图作成绩统计分析 。
(2)绘制复数的相量图,3+2i,4.5-i和 -1.5+5i。
程序如下:
subplot(1,2,1);
pie([7,17,23,19,5]);
title('饼图 ');legend('优秀 ','良好 ','中等 ','及格 ','不及格 ');
subplot(1,2,2);
compass([3+2i,4.5-i,-1.5+5i]);title('相量图 ');
4.2 三维图形
4.2.1绘制三维曲线的最基本函数
plot3函数与 plot函数用法十分相似,其调用格式为:
plot3(x1,y1,z1,选项 1,x2,y2,z2,选项 2,…,xn,yn,zn,选项 n)
例 4.13 绘制空间曲线 。
程序如下:
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;
4.2.2 三维曲面
1,平面网格坐标矩阵的生成
(1)利用矩阵运算生成 。
x=a:dx:b; y=(c:dy:d)';
X=ones(size(y))*x;
Y=y*ones(size(x));
(2)利用 meshgrid函数生成 。
x=a:dx:b; y=c:dy:d;
[X,Y]=meshgrid(x,y);
例 4.14 已知 6<x<30,15<y<36,求不定方程
2x+5y=126的整数解 。
程序如下:
x=5:29; y=14:35;
[x,y]=meshgrid(x,y); %在 [5,29]× [14,35]区域生成网格坐标
z=2*x+5*y;
k=find(z==126); %找出解的位置
x(k),y(k) %输出对应位置的 x,y即方程的解
2,绘制三维曲面的函数
surf函数和 mesh函数的调用格式为:
mesh(x,y,z,c)
surf(x,y,z,c)
例 4.15 用三维曲面图表现函数 z=sin(y)cos(x)。
程序 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');
程序 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');
程序 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;
例 4.16 分析由函数 z=x2-2y2构成的曲面形状及与平面
z=a的交线 。
程序如下:
[x,y]=meshgrid(-10:0.2:10);
z1=(x.^2-2*y.^2)+eps; %第 1个曲面
a=input('a=?'); z2=a*ones(size(x)); %第 2个曲面
subplot(1,2,1);mesh(x,y,z1);hold on;mesh(x,y,z2); %分别画出两个曲面
v=[-10,10,-10,10,-100,100];axis(v);grid; %第 1子图的坐标设置
hold off;
r0=abs(z1-z2)<=1; %求两曲面 z坐标差小于 1的点
xx=r0.*x; yy=r0.*y; zz=r0.*z2; %求这些点上的 x,y,z坐标,即交线坐标
subplot(1,2,2);
plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'*'); %在第 2子图画出交线
axis(v);grid; %第 2子图的坐标设置
3,标准三维曲面
sphere函数的调用格式为:
[x,y,z]=sphere(n)
cylinder函数的调用格式为:
[x,y,z]=sphere(R,n)
MATLAB还有一个 peaks 函数,称为多峰函数,
常用于三维曲面的演示 。
4.2.3 其他三维图形条形图,饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是 bar3,pie3
和 fill3。 此外,还有三维曲面的等高线图 。 等高线图分二维和三维两种形式,分别使用函数
contour和 contour3绘制 。
例 4.17 绘制多峰函数的等高线图 。
程序如下:
[x,y,z]=peaks;
contour3(x,y,z,12,'k'); %其中 12代表高度的等级数
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
title('contour3 of peaks');
4.3 三维图形的精细处理
4.3.1 图形的裁剪处理
MATLAB定义的 NaN常数可以用于表示那些不可使用的数据,利用这种特性,可以将图形中需要裁剪部分对应的函数值设置成 NaN,这样在绘制图形时,函数值为 NaN的部分将不显示出来,从而达到对图形进行裁剪的目的 。
例 4.18 裁掉例 4.15三维曲面图中 z>0.25部分 。
程序如下:
x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);
[I,J]=find(z>0.25);
for ii=1:length(I)
z(I(ii),J(ii))=NaN;
end
surf(x,y,z);
4.3.2 视点处理
MATLAB提供了设置视点的函数 view。 其调用格式为:
view(az,el)
其中 az为方位角,el为仰角,它们均以度为单位 。 系统缺省的视点定义为方位角 -
37.5°,仰角 30° 。
例 4.19 从不同视点绘制多峰函数曲面 。
程序如下:
subplot(2,2,1);mesh(peaks);
view(-37.5,30); %指定子图 1的视点
title('azimuth=-37.5,elevation=30')
subplot(2,2,2);mesh(peaks);
view(0,90); %指定子图 2的视点
title('azimuth=0,elevation=90')
subplot(2,2,3);mesh(peaks);
view(90,0); %指定子图 3的视点
title('azimuth=90,elevation=0')
subplot(2,2,4);mesh(peaks);
view(-7,-10); %指定子图 4的视点
title('azimuth=-7,elevation=-10')
4.3.3 色彩处理
1,颜色的向量表示
MATLAB除用字符表示颜色外,还可以用含有 3个元素的向量表示颜色 。
2,色图色图是 m× 3 的数值矩阵,它的每一行是 RGB三元组 。 色图矩阵可以人为地生成,也可以调用 MATLAB提供的函数来定义色图矩阵 。
除 plot及其派生函数外,mesh,surf等函数均使用色图着色 。
图形窗口色图的设置和改变,使用函数:
colormap(m)
其中 m代表色图矩阵 。
3,三维表面图形的着色三维表面图实际上就是在网格图的每一个网格片上涂上颜色 。
surf函数用缺省的着色方式对网格片着色 。 除此之外,还可以用 shading命令来改变着色方式 。
例 4.20 3种图形着色方式的效果展示 。
程序如下:
z=peaks(20);colormap(copper);
subplot(1,3,1);surf(z);
subplot(1,3,2); surf(z);shading flat;
subplot(1,3,3);surf(z);shading interp;
4.3.4 光照处理
MATLAB提供了灯光设置的函数,其调用格式为:
light('Color',选项 1,'Style',选项 2,'Position',选项 3)
例 4.21 光照处理后的多峰函数曲面 。
程序如下:
z=peaks(20);
subplot(1,2,1);surf(z);
light('Posi',[0,20,10]);shading interp;hold on;
plot3(0,20,10,'p');text(0,20,10,' light');
subplot(1,2,2);surf(z);
light('Posi',[20,0,10]);shading interp;hold on;
plot3(20,0,10,'p');text(20,0,10,' light');
4.4 图像与动画
4.4.1 图像
1,imread和 imwrite函数
imread和 imwrite函数分别用于将图像文件读入
MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件 。
2,image和 imagesc函数这两个函数用于图像显示 。 为了保证图像的显示效果,一般还应使用 colormap函数设置图像色图 。
例 4.22 在 E盘根目录下有一图像文件 building.jpg,
在图形窗口显示该图像 。
程序如下:
[x,cmap]=imread('e:\building.jpg'); %读取图像的数据阵和色图阵
image(x);colormap(cmap);
axis image off %保持宽高比并取消坐标轴
4.4.2 动画
1,getframe函数
getframe函数可截取每一幅画面信息而形成一个很大的列向量 。 该向量可保存到一个变量中 。
显然,保存 n幅图就需一个大矩阵 。
2,moviein函数
moviein(n)函数用来建立一个足够大的 n列矩阵 。
该矩阵用来保存 n幅画面的数据,以备播放 。
3,movie函数
movie(m,n)函数以每秒 n幅图形的速度播放由矩阵 m的列向量所组成的画面 。
例 4.23 播放一个直径不断变化的球体 。
程序如下
[x,y,z]=sphere(50);
m=moviein(30); %建立一个 30列大矩阵
for i=1:30
surf(i*x,i*y,i*z) %绘制球面
m(:,i)=getframe; %将球面保存到 m矩阵
end
movie(m,10); %以每秒 10幅的速度播放球面
4.5 低层绘图操作
4.5.1 图形对象及其句柄
1,图形对象
MATLAB把构成图形的各个基本要素称为图形对象 。 这些对象包括计算机屏幕,图形窗口
(Figure),坐标轴 (Axes),用户菜单 (Uimenu)、
用 户 控 件 (Uicontrol),曲线 (Line),曲面
(Surface),文字 (Text),图像 (image),光源
(Light),区域块 (Patch)和方框 (Rectangle)。 系统将每一个对象按树型结构组织起来 。 每个图形对象都可以被独立地操作 。
2,图形对象句柄
MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄 (Handle)。
句柄是图形对象的唯一标识符 。
MATLAB提供了 3个用于获取已有图形对象句柄的函数:
gcf 获取当前图形窗口的句柄 (get current figure)。
gca 获取当前坐标轴的句柄 (get current axis)。
gco 获取最近被单击的图形对象的句柄 (get current
object)。
4.5.2 图形对象属性
1,属性名与属性值
MATLAB给每种对象的每一个属性规定了一个名字,
称为属性名,而属性名的取值成为属性值 。 例如,
LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是 '-',':','-.','--'或 'none'。
2,属性的操作
set函数的调用格式为:
set(句柄,属性名 1,属性值 1,属性名 2,属性值 2,… )
get函数的调用格式为:
V=get(句柄,属性名 )
4.5.3 图形对象的创建
1,图形窗口对象建立图形窗口对象使用 figure函数 。 调用该函数的命令形式为:
句柄变量 =figure(属性名 1,属性值 1,属性名 2,
属性值 2,… )
MATLAB为每个图形窗口提供了很多属性 。 这些属性及其取值控制着图形窗口对象 。 除公共属性外,其他常用属性,MenuBar属性,Name
属性,Position属性,Color属性等 。
例 4.25 建立一个图形窗口 。 该图形窗口没有菜单条,标题名称为,图形窗口示例,,起始于屏幕左下角,宽度和高度分别为 300像素点和 150像素点,
背景颜色为绿色,且当用户从键盘按下任意一个键时,将显示,Hello,Keyboard Key Pressed.”字样 。
命令如下:
hf=figure('Color',[0,1,0],'Position',[1,1,300,150],...
'Name','图形窗口示例 ','NumberTitle','off','MenuBar','none',...
'KeyPressFcn','disp(''Hello,Keyboard Key Pressed.'')');
例 4.26 分别在 4个不同的图形窗口绘制出正弦,余弦,正切,
余切曲线 。 要求先建立一个图形窗口并绘图,然后每关闭一个再建立下一个,直到建立第 4个窗口并绘图 。
程序如下:
x=linspace(0,2*pi,60);
y=sin(x);z=cos(x);t=tan(x);ct=1./(t+eps);;
%命令组待用
C4=['figure(''Name'',''cotangent(x)'',''NumberTitle'',',...
'''off'');plot(x,ct);axis([0,2*pi,-40,40]);'];
C3=['figure(''Name'',''tangent(x)'',''DeleteFcn'',C4,',...
'''NumberTitle'',''off'');plot(x,t);axis([0,2*pi,-40,40]);'];
C2=['figure(''Name'',''cos(x)'',''DeleteFcn'',C3,',...
'''NumberTitle'',''off'');plot(x,z);axis([0,2*pi,-1,1]);'];
%先创建 1个图形窗口并绘制曲线
figure('Name','sin(x)','DeleteFcn',C2,'NumberTitle','off');
plot(x,y);axis([0,2*pi,-1,1]);
2,坐标轴对象
建立坐标轴对象使用 axes函数,调用它的命令形式为:
句柄变量 =axes(属性名 1,属性值 1,属性名 2,属性值 2,… )
MATLAB为每个坐标轴对象提供了很多属性 。 除公共属性外,还 有 其 他 常 用 属 性 。
例 4.27 利用坐标轴对象实现图形窗口的任意分割 。
程序如下:
clf; %清图形窗口
x=linspace(0,2*pi,20);y=sin(x);
axes('Posi',[0.2,0.2,0.2,0.7]);plot(y,x);title('sin(x)-1‘);
axes(’Posi‘,[0.4,0.5,0.2,0.1]);stairs(x,y);title(’sin(x)-2‘);
axes(’Posi‘,[0.55,0.6,0.25,0.3]);stem(x,y);title(’sin(x)-3‘);
axes(’Posi‘,[0.55,0.2,0.25,0.3]);stem(x,y);title(’sin(x)-4‘);
3,曲线对象建立曲线对象使用 line函数,调用它的命令形式为:
句柄变量 =line(x,y,z,属性名 1,属性值 1,属性名 2,属性值 2,… )
其中对 x,y,z的解释与高层曲线函数 plot和 plot3等一样,
其余的解释与前面介绍过的 figure和 axes函数类似 。
每个曲线对象也具有很多属性 。 除公共属性外,还有其他常用属性 。
4,文字对象使用 text函数可以根据指定位置和属性值添加文字说明,并保存句柄 。 调用该函数的命令形式为:
句柄变量 =text(x,y,z,‘说明文字 ’,属性名 1,属性值 1,属性名 2,属性值
2,… )
其中说明文字中除使用标准的 ASCII字符外,还可使用 LATEX格式的控制字符 。
除公共属性外,文字对象还有其他常用属性 。
例 4.28 利用曲线对象完成例 4.5。
程序如下:
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);
line(x,y1,'LineStyle',':','color','g');
line(x,y2,'LineStyle','--','color','b');
line(x1,y3,'LineStyle','none','Marker','p','color','r‘);
title(’曲线及其包络线 ‘ );
xlabel('independent variableX‘);
ylabel(’independentvariableY‘);
text(2.8,0.55,’2e^{-0.5x}‘,’FontSize‘,12);
text(0.45,0.55,’y=2e^{-0.5x}sin(2{\pi}x)‘,’FontSize‘,12);
text(1.4,0.1,’离散数据点 ‘ );
legend(’包络线 ‘,’包络线 ‘,’曲线 y‘,’离散数据点 ‘ )
5,曲面对象建立曲面对象使用 surface函数,调用它的命令形式为:
句柄变量 =surface(x,y,z,属性名 1,属性值 1,属性名 2,属性值 2,… )
其中对 x,y,z的解释与高层曲面函数 mesh和 surf等一样,其余的解释与前面介绍过的 figure和 axes等函数类似 。
每个曲面对象也具有很多属性 。 除公共属性外,
还有其他常用属性 。
例 4.29利用曲面对象绘制三维曲面 z=sin(y)cos(x)。
程序如下:
x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);
axes('view',[-37.5,30]);
hs=surface(x,y,z,'FaceColor','w','EdgeColor','flat');
grid on;
xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
title('mesh-surf');
pause;
set(hs,'FaceColor','flat');