
matlab画图98062ppt课件.ppt
61页二维图形二维图形绘制二维曲线的基本函数绘制二维曲线的基本函数1. plot函数的基本用法函数的基本用法plot函数的基本调用格式为:函数的基本调用格式为:plot(x,y) 其中其中x和和y为长度相同的向量,分别用于存储为长度相同的向量,分别用于存储x坐标和坐标和y坐标数据坐标数据 例例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)test 例例 绘制参数方程曲线绘制参数方程曲线X=tcos(3t) Y=tsin(t2)t=-pi:pi/100:pi;x=t.*cos(3*t);y=t.*sin(t).*sin(t);plot(x,y); 说明:说明:((1〕当〕当x,y是同维矩阵时,则以是同维矩阵时,则以x,y对应列元素为对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数2〕当〕当x是向量,是向量,y是有一维与是有一维与x同维的矩阵时,同维的矩阵时,则绘制出多根不同色彩的曲线。
曲线条数等于则绘制出多根不同色彩的曲线曲线条数等于y矩阵的另一维数,矩阵的另一维数,x被作为这些曲线共同的横被作为这些曲线共同的横坐标3〕〕plot函数最简单的调用格式是只包含一个输函数最简单的调用格式是只包含一个输入参数:入参数:plot(x) 2.含多个输入参数的.含多个输入参数的plot函数函数含多个输入参数的含多个输入参数的plot函数调用格式为:函数调用格式为:plot(x1,y1,x2,y2,…,xn,yn)3.含选项的.含选项的plot函数函数含选项的含选项的plot函数调用格式为:函数调用格式为:plot(x1,y1,选项选项1,x2,y2, 选项选项2,…,xn,yn,选项选项n) 例例2 用不同线型和颜色在同一坐标内绘制曲线用不同线型和颜色在同一坐标内绘制曲线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数据对 例例3 用不同标度在同一坐标内绘制曲线用不同标度在同一坐标内绘制曲线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); 绘制图形的辅助操作绘制图形的辅助操作 1. 图形标注图形标注 有关图形标注函数的调用格式为:有关图形标注函数的调用格式为: title(图形名称图形名称) xlabel(x轴说明轴说明) ylabel(y轴说明轴说明) text(x,y,图形说明图形说明) legend(图例图例1,图例图例2,…) 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命令在两种状态之间进行切换命令在两种状态之间进行切换 3. 图形保持图形保持 一般情况下,绘图命令每执行一次就刷新一般情况下,绘图命令每执行一次就刷新当前图形窗口,图形窗口原有图形将不复当前图形窗口,图形窗口原有图形将不复存在若希望在已存在的图形上再继续添存在若希望在已存在的图形上再继续添加新的图形,可使用图形保持命令加新的图形,可使用图形保持命令holdhold on/off命令控制是保持原有图形还是刷命令控制是保持原有图形还是刷新原有图形,不带参数的新原有图形,不带参数的hold命令在两种状命令在两种状态之间进行切换态之间进行切换 例例4 用图形保持功能在同一坐标内绘制曲线用图形保持功能在同一坐标内绘制曲线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');legend('包络线包络线','包络线包络线','曲线曲线y'); hold off; grid 4. 图形窗口的分割图形窗口的分割 subplot函数的调用格式为:函数的调用格式为: subplot(m,n,p) 例例5 在一个图形窗口中以子图在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、形式同时绘制正弦、余弦、正切、余切曲线。
余切曲线 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]); 绘制二维图形的其他函数绘制二维图形的其他函数1. 其他形式的线性直角坐标图其他形式的线性直角坐标图性直角坐标系中,其他形式的图形有性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所条形图、阶梯图、杆图和填充图等,所采用的函数分别是:采用的函数分别是:bar(x,y,选项选项)stairs(x,y,选项选项)stem(x,y,选项选项)fill(x1,y1,选项选项1,x2,y2,选项选项2,…) 例例6 分别以条形图、填充图、阶梯图和杆图形分别以条形图、填充图、阶梯图和杆图形式绘制曲线式绘制曲线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函数相似函数相似例例7 绘制绘制ρ=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,…) 例例8 绘制绘制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,选项选项)例例9 用用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提供的绘图函数还有很多,例如,用来表提供的绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图示各元素占总和的百分比的饼图、复数的相量图等等例例10 绘制图形:绘制图形:(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('相量图相量图');三维图形三维图形绘制三维曲线的基本函数绘制三维曲线的基本函数 plot3函数与函数与plot函数用法十分相似,其调用格式为:函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项选项1,x2,y2,z2,选项选项2,…,xn,yn,zn,选项选项n) 例例11 绘制空间曲线。
绘制空间曲线 程序如下:程序如下: 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; 5.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); 2. 绘制三维曲面的函数绘制三维曲面的函数 surf函数和函数和mesh函数的调用格式为:函数的调用格式为: mesh(x,y,z,c) surf(x,y,z,c)例例12 用三维曲面图表现函数用三维曲面图表现函数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; 例例13 在在xy平面内选择区域平面内选择区域[-8,8]×[-8,8],绘制函数,绘制函数的的4种三维曲面图种三维曲面图。
程序如下:程序如下:[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(x,y,z)')subplot(2,2,2);meshz(x,y,z);title('meshz(x,y,z)')subplot(2,2,3);surfc(x,y,z)title('surfc(x,y,z)')subplot(2,2,4);surfl(x,y,z)title('surfl(x,y,z)') 3. 标准三维曲面标准三维曲面sphere函数的调用格式为:函数的调用格式为: [x,y,z]=sphere(n)cylinder函数的调用格式为:函数的调用格式为: [x,y,z]=sphere(R,n)MATLAB还有一个还有一个peaks 函数,称为多峰函数,函数,称为多峰函数,常用于三维曲面的演示常用于三维曲面的演示 例例14 绘制标准三维曲面图形绘制标准三维曲面图形程序如下:程序如下: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); 例例15 绘制多峰函数的瀑布图和等高线图。
绘制多峰函数的瀑布图和等高线图程序如下:程序如下:subplot(1,2,1);[X,Y,Z]=peaks(30);waterfall(X,Y,Z)xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');subplot(1,2,2);contour3(X,Y,Z,12,'k'); %其中其中12代表高度的等级数代表高度的等级数xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis'); 色彩处理色彩处理 1. 颜色的向量表示颜色的向量表示 MATLAB除用字符表示颜色外,还可以用含有除用字符表示颜色外,还可以用含有3个元素的向个元素的向量表示颜色量表示颜色 2. 色图色图 色图是色图是m×3 的数值矩阵,它的每一行是的数值矩阵,它的每一行是RGB三元组色图三元组色图矩阵可以人为地生成,也可以调用矩阵可以人为地生成,也可以调用MATLAB提供的函数来提供的函数来定义色图矩阵定义色图矩阵 除除plot及其派生函数外,及其派生函数外,mesh、、surf等函数均使用色图着色。
等函数均使用色图着色图形窗口色图的设置和改变,使用函数:图形窗口色图的设置和改变,使用函数: colormap(m) 其中其中m代表色图矩阵代表色图矩阵 3. 三维表面图形的着色三维表面图形的着色 三维表面图实际上就是在网格图的每一个网格片上涂上颜色三维表面图实际上就是在网格图的每一个网格片上涂上颜色surf函数用缺省的着色方式对网格片着色除此之外,还可函数用缺省的着色方式对网格片着色除此之外,还可以用以用shading命令来改变着色方式命令来改变着色方式 例例16 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;隐函数绘图隐函数绘图MATLAB提供了一个提供了一个ezplot函数绘制隐函数图形,下函数绘制隐函数图形,下面介绍其用法面介绍其用法。
1) 对于函数对于函数f = f(x),,ezplot函数的调用格式为:函数的调用格式为:ezplot(f):在默认区间:在默认区间-2π 的图形例例17 隐函数绘图应用举例隐函数绘图应用举例程序如下:程序如下:subplot(2,2,1);ezplot('x^2+y^2-9');axis equalsubplot(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]) 5.5 低层绘图操作低层绘图操作 5.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) 5.5.2 图形对象属性图形对象属性 1. 属性名与属性值属性名与属性值 MATLAB给每种对象的每一个属性规定了一个名给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值。 例字,称为属性名,而属性名的取值成为属性值例如,如,LineStyle是曲线对象的一个属性名,它的值决是曲线对象的一个属性名,它的值决定着线型,取值可以是定着线型,取值可以是'-' 、、':'、、'-.'、、'--'或或'none' 2. 属性的操作属性的操作 set函数的调用格式为:函数的调用格式为: set(句柄,属性名句柄,属性名1,属性值,属性值1,属性名,属性名2,属性值,属性值2,,…) get函数的调用格式为:函数的调用格式为: V=get(句柄,属性名句柄,属性名) 3. 对象的公共属性对象的公共属性 图形对象具有各种各样的属性,有些属性是所有图形对象具有各种各样的属性,有些属性是所有对象共同具备的,有些则是各对象所特有的对象共同具备的,有些则是各对象所特有的 例例5.26 在同一坐标下画红、绿两根不同曲线,希望在同一坐标下画红、绿两根不同曲线,希望获得绿色曲线的句柄,并对其进行设置获得绿色曲线的句柄,并对其进行设置程序如下:程序如下:x=0:pi/50:2*pi;y=sin(x);z=cos(x);plot(x,y,'r',x,z,'g');H=get(gca,'Children'); %获取两曲线句柄向获取两曲线句柄向量量Hfor k=1:length(H) if get(H(k),'Color')==[0 1 0] %[0 1 0]代表绿色代表绿色 Hg=H(k); %获取绿色线条句柄获取绿色线条句柄 endendpause %便于观察设置效果便于观察设置效果set(Hg,'LineStyle',':','Marker','p'); %对绿色曲线对绿色曲线进行设置进行设置 5.5.3 图形对象的创建图形对象的创建 1. 图形窗口对象图形窗口对象 建立图形窗口对象使用建立图形窗口对象使用figure函数。 调用该函函数调用该函数的命令形式为:数的命令形式为: 句柄变量句柄变量=figure(属性名属性名1,属性值,属性值1,属性名,属性名2,属性值,属性值2,,…) MATLAB为每个图形窗口提供了很多属性这为每个图形窗口提供了很多属性这些属性及其取值控制着图形窗口对象除公共些属性及其取值控制着图形窗口对象除公共属性外,其他常用属性:属性外,其他常用属性:MenuBar属性、属性、Name属性、属性、Position属性、属性、Color属性等 例例5.27 建立一个图形窗口该图形窗口没建立一个图形窗口该图形窗口没有菜单条,标题名称为有菜单条,标题名称为“图形窗口示例图形窗口示例”,,起始于屏幕左下角、宽度和高度分别为起始于屏幕左下角、宽度和高度分别为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.'')'); 例例5.28 分分别别在在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为每个坐标轴对象提供了很多属性。 除公为每个坐标轴对象提供了很多属性除公共属性外,还有其他常用属性共属性外,还有其他常用属性 例例5.29 利用坐标轴对象实现图形窗口的任意分割利用坐标轴对象实现图形窗口的任意分割 程序如下:程序如下: 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函数类似。 函数类似每个曲线对象也具有很多属性除公共属性外,每个曲线对象也具有很多属性除公共属性外,还有其他常用属性还有其他常用属性例例5.30 利用曲线对象绘制曲线利用曲线对象绘制曲线程序如下:程序如下:t=0:pi/100:pi/2;y1=sin(2*pi*t);y2=sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3)*t+pi/3);figh=figure;axes('GridLineStyle',':','XLim',[0,pi/2],'YLim',[-1,1]);line('XData',t,'YData',y1,'LineWidth',1);line(t,y2);grid on 4. 文字对象文字对象 使用使用text函数可以根据指定位置和属性值添函数可以根据指定位置和属性值添加文字说明,并保存句柄调用该函数的命加文字说明,并保存句柄调用该函数的命令形式为:令形式为: 句柄变量句柄变量=text(x,y,z,‘说明文字说明文字’,属性名属性名1,,属性值属性值1,属性名,属性名2,属性值,属性值2,,…) 其中说明文字中除使用标准的其中说明文字中除使用标准的ASCII字符外,字符外,还可使用还可使用LATEX格式的控制字符。 格式的控制字符 除公共属性外,文字对象还有其他常用属性除公共属性外,文字对象还有其他常用属性 例例5.31 利用曲线对象绘制曲线和并利用文字对象完成标利用曲线对象绘制曲线和并利用文字对象完成标注程序如下:程序如下:theta=-pi:.1:pi;y1=sin(theta);y2=cos(theta);h=line(theta,y1,'LineStyle',':','Color','g');line(theta,y2,'LineStyle','--','Color','b');xlabel('-\pi \leq \theta \leq \pi')ylabel('sin(\theta)')title('Plot of sin(\theta)')text(-pi/4,sin(-pi/4),'\leftarrow sin(-\pi\div4)','FontSize',12)set(h,'Color','r','LineWidth',2) %改变曲线改变曲线1的颜色和的颜色和线宽线宽 5. 曲面对象曲面对象 建立曲面对象使用建立曲面对象使用surface函数,调用它的命令形式为:函数,调用它的命令形式为: 句柄变量句柄变量=surface(x,y,z,属性名属性名1,属性值,属性值1,属性名,属性名2,属性,属性值值2,,…) 其中对其中对x,y,z的解释与高层曲面函数的解释与高层曲面函数mesh和和surf等一样,其等一样,其余的解释与前面介绍过的余的解释与前面介绍过的figure和和axes等函数类似。 等函数类似 每个曲面对象也具有很多属性除公共属性外,还有其他每个曲面对象也具有很多属性除公共属性外,还有其他常用属性常用属性 例例5.32 利用曲面对象绘制三维曲面利用曲面对象绘制三维曲面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'); 6.区域块对象.区域块对象 区域块对象是指一个任意多边形区域在区域块对象是指一个任意多边形区域在MATLAB中,可以使用中,可以使用patch函数创建一个或多函数创建一个或多个多边形有两种形式的个多边形有两种形式的patch函数,一种是高级函数,一种是高级语法形式,另一种是低级语法形式。 前者通过指语法形式,另一种是低级语法形式前者通过指定每个小面的顶点坐标和颜色来创建区域块对象,定每个小面的顶点坐标和颜色来创建区域块对象,后者通过指定所有顶点的坐标和各小面的顶点和后者通过指定所有顶点的坐标和各小面的顶点和颜色来创建颜色来创建 使用高级语法形式时,使用高级语法形式时,patch函数的调用格式为:函数的调用格式为: patch(x,y,z,c) 该函数在当前坐标轴中创建二维该函数在当前坐标轴中创建二维(x,y)或三维或三维(x,y,z)空间中带填充模式的区域块对象空间中带填充模式的区域块对象x,y,z确确定顶点坐标如果定顶点坐标如果x,y,z为矩阵,则为矩阵,则MATLAB按列按列创建多个多边形创建多个多边形c指定每一区域块对象的颜色,指定每一区域块对象的颜色,它既可以用字符表示,也可以用它既可以用字符表示,也可以用RGB三元组表示三元组表示例例5.33 绘制两个等直径圆柱体的交线绘制两个等直径圆柱体的交线7.方框对象.方框对象 在在MATLAB中,矩形、圆角矩形、椭圆、中,矩形、圆角矩形、椭圆、圆及对应的区域图形都用方框对象表示圆及对应的区域图形都用方框对象表示。 使用使用rectangle函数可以创建方框对象,其调函数可以创建方框对象,其调用格式为:用格式为: 句柄变量句柄变量= rectangle (属性名属性名1,属性值,属性值1,,属性名属性名2,属性值,属性值2,,…)例例5.34 在同一个图形窗口中创建矩形、圆角矩形、在同一个图形窗口中创建矩形、圆角矩形、椭圆和圆各一个,并使用了不同的线型和线宽椭圆和圆各一个,并使用了不同的线型和线宽subplot(2,2,1);rectangle('Position',[2,3,25,15],'LineWidth',3);subplot(2,2,2);rectangle('Position',[3,5,15,8], 'Curvature',0.4,'LineWidth',2); subplot(2,2,3);rectangle('Position',[5,3,10,15],'Curvature',[1,1]);subplot(2,2,4);rectangle('Position',[5,3,10,10],'Curvature',[1,1],... 'LineStyle','--','FaceColor','r');axis equal 5.6 光照和材质处理光照和材质处理5.6.1 光照处理光照处理为了创建光照效果,为了创建光照效果,MATLAB提供了光源提供了光源(Light)图形对象。 用图形对象用light函数创建函数创建Light对象,该函数的对象,该函数的调用格式为:调用格式为:light('Color',选项选项1,'Style',选项选项2,'Position',选项选项3)利用利用lighting命令可以设置光照模式,其格式为:命令可以设置光照模式,其格式为:lighting 选项选项其中选项有其中选项有4种取值:种取值:flat、、gouraud、、phong、、none 例例5.35 光照处理后的球面并观察不同光照模式下的光照处理后的球面并观察不同光照模式下的效果程序如下:程序如下:[x,y,z]=sphere(20);subplot(1,4,1);surf(x,y,z);axis equal;shading interp;hold on;subplot(1,4,2);surf(x,y,z);axis equal;light('Position',[0,1,1]);shading interp;lighting flat;hold on;plot3(0,1,1,'p');text(0,1,1,' light');subplot(1,4,3);surf(x,y,z);axis equal;light('Position',[0,1,1]);shading interp;lighting gouraud;hold on;subplot(1,4,4);surf(x,y,z);axis equal;light('Position',[0,1,1]);shading interp;lighting phong;5.6.2 材质处理材质处理 材质体现了图形对象的反射特性,修改区材质体现了图形对象的反射特性,修改区域块和曲面对象的反射特性域块和曲面对象的反射特性,可以改变在场可以改变在场景中应用光照时对象的显示外观。 这些特景中应用光照时对象的显示外观这些特性包括性包括:镜面反射和漫反射、环境光、镜面镜面反射和漫反射、环境光、镜面反射指数、镜面反射光的颜色和背面光照反射指数、镜面反射光的颜色和背面光照例例5.36 生成一个球体和一个立方体,观察不同光照属性对应的显示效果生成一个球体和一个立方体,观察不同光照属性对应的显示效果程序如下:程序如下:sphere(36);h=findobj('Type','surface');set(h,'FaceLighting','phong','FaceColor','interp',...'EdgeColor',[0.4,0.4,0.4],'BackFaceLighting','lit')hold onvert=[2,0,-1;2,1,-1;3,0,0;3,0,-1;2,0,0;2,1,0;3,1,0;3,0,0];fac=[1,2,3,4;2,6,7,3;4,3,7,8;1,5,8,4;1,2,6,5;5,6,7,8];patch('Faces',fac,'Vertices',vert,'FaceColor','y');light('Position',[1,3,2]);light('Position',[-3,-1,3]);material shinyaxis equalhold off5.7 图像显示与动画制作图像显示与动画制作 5.7.1 图像显示图像显示 1. imread和和imwrite函数函数 imread和和imwrite函数分别用于将图像文件读函数分别用于将图像文件读入入MATLAB工作空间,以及将图像数据和色图工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。 数据一起写入一定格式的图像文件 2. image和和imagesc函数函数 这两个函数用于图像显示为了保证图像的显这两个函数用于图像显示为了保证图像的显示效果,一般还应使用示效果,一般还应使用colormap函数设置图像函数设置图像色图 例例5.37 在在E盘根目录下有一图像文件盘根目录下有一图像文件flower.jpg,在图形窗口显示该图像在图形窗口显示该图像程序如下:程序如下:[x,cmap]=imread('e:\flower.jpg'); %读取图像的数据阵和色图阵读取图像的数据阵和色图阵image(x); %显示图像显示图像colormap(cmap);axis image off %保持宽高比并取消坐标保持宽高比并取消坐标轴轴 5.7.2 动画制作动画制作 1.影片动画制作.影片动画制作 如果将如果将MATLAB产生的多幅图形保存起来,并利用产生的多幅图形保存起来,并利用系统提供的函数进行播放,就可产生动画效果系统提供的函数进行播放,就可产生动画效果MATLAB提供了提供了3个函数用于捕捉和播放动画,它个函数用于捕捉和播放动画,它们分别为们分别为getframe、、moviein和和movie。 getframe函数可截取每一幅画面信息而形成一个很函数可截取每一幅画面信息而形成一个很大的列向量该向量可保存到一个变量中显然,大的列向量该向量可保存到一个变量中显然,保存保存n幅图就需一个大矩阵幅图就需一个大矩阵 moviein(n)函数用来建立一个足够大的函数用来建立一个足够大的n列矩阵该列矩阵该矩阵用来保存矩阵用来保存n幅画面的数据,以备播放之所以幅画面的数据,以备播放之所以要事先建立一个大矩阵,是为了提高程序运行速度要事先建立一个大矩阵,是为了提高程序运行速度 movie(m,n)函数播放由矩阵函数播放由矩阵m所定义的画面所定义的画面n次,默次,默认时播放一次认时播放一次 例例5.38 播放一个直径不断变化的球体播放一个直径不断变化的球体程序如下:程序如下:[x,y,z]=sphere(50);m=moviein(30); %建立一个建立一个30列大矩阵列大矩阵for i=1:30 surf(i*x,i*y,i*z) %绘制球面绘制球面 m(:,i)=getframe; %将球面保存到将球面保存到m矩阵矩阵endmovie(m,10); %以每秒以每秒10幅的速度播放球面幅的速度播放球面 2.实时动画制作.实时动画制作 制作实时动画的基本方法是,先画出初始制作实时动画的基本方法是,先画出初始图形,再计算活动对象的新位置,并在新图形,再计算活动对象的新位置,并在新位置上把它显示出来,最后擦除原位置上位置上把它显示出来,最后擦除原位置上原有的对象,刷新屏幕。 重复操作即可产原有的对象,刷新屏幕重复操作即可产生动画效果生动画效果 例例5.39 模拟布朗运动模拟布朗运动程序如下:程序如下:n=30; %指定布朗运动的点数指定布朗运动的点数s=0.02; %指定温度或速率指定温度或速率%产生产生n个随机点个随机点(x,y),处于,处于-0.5到到0.5之间之间x=rand(n,1)-0.5;y=rand(n,1)-0.5;h=plot(x,y,'.'); %绘制随机点绘制随机点axis([-1 1 -1 1]) ;axis squaregrid offset(h,'EraseMode','Xor','MarkerSize',20); %设置擦除模式设置擦除模式为为Xor%循环循环5000次,产生动画效果次,产生动画效果for i=linspace(1,10,5000) drawnow x=x+s*randn(n,1); %在坐标点附近添加随机噪声在坐标点附近添加随机噪声 y=y+s*randn(n,1); set(h,'XData',x,'YData',y); %通过改变数据属性来重新绘通过改变数据属性来重新绘图图end 。












