
第3章matlab作图方法ppt课件.ppt
38页第3章 MATLAB作图3.1 二维绘图 3.2 基本三维绘图命令 3.1 二维绘图(2-D plotting)•3.1.1 绘图的一般步骤绘图的一般步骤•1. 曲线数据准备曲线数据准备•2. 指定图形窗口和子图位置指定图形窗口和子图位置•3. 绘制图形绘制图形•4. 设置坐标轴和图形注释设置坐标轴和图形注释•5. 仅对三维图形使用的着色和视点等设置仅对三维图形使用的着色和视点等设置•6. 图形的精细修饰图形的精细修饰•7. 按指定格式保存或导出图形按指定格式保存或导出图形3.1.2 基本绘图函数•MATLAB 7.3中最基本的绘图函数是绘制曲线中最基本的绘图函数是绘制曲线函数函数plot•plot(y) %绘制以绘制以y为纵坐标、以该向量元素的为纵坐标、以该向量元素的下标为横坐标的二维曲线下标为横坐标的二维曲线•plot(x,y) %绘制以绘制以x为横坐标为横坐标y为纵坐标的为纵坐标的二维曲线二维曲线•plot(x1,y1,x2,y2…)%在同一窗口绘制多条二维在同一窗口绘制多条二维曲线曲线•说明:说明:x和和y可以是实数向量或矩阵,也可以是可以是实数向量或矩阵,也可以是复数向量或矩阵。
复数向量或矩阵•例3-3 绘制矩阵y为2×3的曲线图•>> y=[1 2 3;4 5 6];•>> plot(y)y是是2×3的矩阵,每的矩阵,每列画一条曲线共列画一条曲线共3条,条,第一条线纵坐标画第一条线纵坐标画的是的是[1 4]两点•例例3-4 绘制方波信号,如图绘制方波信号,如图3-4所示•>> x=[0 1 1 2 2 3 3 4 4];•>> y=[1 1 0 0 1 1 0 0 1];•>> plot(x,y)例例5-3 分析下列程序绘制的曲线分析下列程序绘制的曲线x1=linspace(0,2*pi,100);x2=linspace(0,3*pi,100);x3=linspace(0,4*pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=[x1;x2;x3]';y=[y1;y2;y3]';plot(x,y,x1,y1-1)•x和和y为向量或矩阵时的为向量或矩阵时的plot(x,y),分别有以下几种,分别有以下几种情况:情况:•x是向量是向量y是矩阵时:是矩阵时:•x的长度与矩阵的长度与矩阵y的行数或列数必须相等,如果的行数或列数必须相等,如果x的的长度与长度与y的每列元素个数相等,向量的每列元素个数相等,向量x与与y的每列向的每列向量画一条曲线;量画一条曲线;•如果如果x的长度与的长度与y的每行元素个数相等,则向量的每行元素个数相等,则向量x与与矩阵矩阵y的每行向量对应画一条曲线;的每行向量对应画一条曲线;•如果如果y是方阵,是方阵,x和和y的行数和列数都相等,则向量的行数和列数都相等,则向量x与矩阵与矩阵y的每列向量画一条曲线。
的每列向量画一条曲线•x是矩阵是矩阵y是向量时:是向量时:•y的长度必须等于的长度必须等于x的行数或列数,绘制的方法与前的行数或列数,绘制的方法与前一种相似一种相似•x和和y都是矩阵时:都是矩阵时:•x和和y大小必须相同,矩阵大小必须相同,矩阵x的每列与的每列与y的每列画一条的每列画一条曲线•例例3-6 x是矩阵,分别绘制是矩阵,分别绘制x与与y1和和x与与y2的曲线,的曲线,已知已知y1是向量且长度与是向量且长度与x的行数相等,的行数相等,y2是矩是矩阵且与阵且与x尺寸相同尺寸相同•>> x=[1:4;2:5;3:6]•x =• 1 2 3 4• 2 3 4 5• 3 4 5 6•>> y1=[1 2 3] % y1长度与长度与x的行数相等的行数相等•y1 =• 1 2 3•>> plot(x,y1)3.1.3符号函数符号函数(显函数、隐函数和参数方程显函数、隐函数和参数方程)画图画图(1) ezplotezplot(‘x(t)’,’y(t)’,[tmin,tmax]) 表示在区间表示在区间tmin 但在一个图上可以画多个图形fplot(‘fun’,lims) 表示绘制字符串表示绘制字符串fun指定的函数在指定的函数在lims=[xmin,xmax]的图形的图形.解解 先建先建M文件文件myfun1.m:: function Y=myfun1(x) Y=exp(2*x)+sin(3*x.^2)再输入命令:再输入命令:fplot(‘myfun1’,[-1,2])解解 输入命令输入命令: fplot('[tanh(x),sin(x),cos(x)]',2*pi*[-1 1])例例 在在[-2,2]范围内绘制函数范围内绘制函数tanh的图形的图形解解 fplot('tanh',[-2,2])3.1.4 多个图形的绘制 1 图形窗口的分割图形窗口的分割subplot函数的调用格式为:函数的调用格式为:subplot(m,n,p)该函数将当前图形窗口分成该函数将当前图形窗口分成m×n个绘图区,个绘图区,即每行即每行n个,共个,共m行,区号按行优先编号,行,区号按行优先编号,且选定第且选定第p个区为当前活动区在每一个绘个区为当前活动区在每一个绘图区允许以不同的坐标系单独绘制图形。 图区允许以不同的坐标系单独绘制图形•例例3-8 在同一个窗口中建立四个子图,在子图中在同一个窗口中建立四个子图,在子图中分别绘制分别绘制sin(x)、、cos(x)、、sin(2x)和和cos(2x)曲线,如曲线,如图图3-8所示•>> x=0:0.1:10;•>> subplot(2,2,1)%第一行左图第一行左图•>> plot(x,sin(x))•>> subplot(2,2,2) %第一行右图第一行右图•>> plot(x,cos(x))•>> subplot(2,2,3) %第二行左图第二行左图•>> plot(x,sin(2*x))•>> subplot(2,2,4) %第二行右图第二行右图•>> plot(x,cos(2*x))2.具有两个纵坐标标度的图形.具有两个纵坐标标度的图形在在MATLAB中,如果需要绘制出具有不同纵坐标中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用标度的两个图形,可以使用plotyy绘图函数绘图函数调用格式为:调用格式为:plotyy(x1,y1,x2,y2)其中其中x1,y1对应一条曲线,对应一条曲线,x2,y2对应另一条曲线对应另一条曲线。 横坐标的标度相同,纵坐标有两个,左纵坐标横坐标的标度相同,纵坐标有两个,左纵坐标用于用于x1,y1数据对,右纵坐标用于数据对,右纵坐标用于x2,y2数据对例例5-4 用不同标度在同一坐标内绘制曲线用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和和y2=2e-0.5xcos(πx)程序如下:程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plotyy(x,y1,x,y2);例例5-5 采用图形保持,在同一坐标内绘制曲线采用图形保持,在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和和y2=2e-0.5xcos(πx)程序如下:程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);plot(x,y1)hold ony2=2*exp(-0.5*x).*cos(pi*x);plot(x,y2);hold off3.图形保持.图形保持hold on/off命令控制是保持原有图形还是刷新原命令控制是保持原有图形还是刷新原有图形,不带参数的有图形,不带参数的hold命令在两种状态之间命令在两种状态之间进行切换。 进行切换 figure(h)例例 区间区间[0,2*pi]新建两个窗口分别画出新建两个窗口分别画出y=sin(x);;z=cos(x)解解 x=linspace(0,2*pi,100); y=sin(x);z=cos(x); plot(x,y); title('sin(x)'); pause figure(2); plot(x,z); title('cos(x)');新建h窗口,激活图形使其可见,并把它置于其它图形之上3.1.5 设置曲线样式设置曲线样式MATLAB提供了一些绘图选项,用于确定提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符所绘曲线的线型、颜色和数据点标记符号,它们可以组合使用例如,号,它们可以组合使用例如,“b-.”表示蓝色点划线,表示蓝色点划线,“y:d〞表示黄色虚线〞表示黄色虚线并用菱形符标记数据点当选项省略时,并用菱形符标记数据点当选项省略时,MATLAB规定,线型一律用实线,颜色规定,线型一律用实线,颜色将根据曲线的先后顺序依次不同将根据曲线的先后顺序依次不同要设置曲线样式可以在要设置曲线样式可以在plot函数中加绘图选函数中加绘图选项,其调用格式为:项,其调用格式为:plot(x1,y1,选项选项1,x2,y2,选项选项2,…,xn,yn,选项选项n)•y 黄色黄色 . 点点 - 连线连线•m 洋红洋红 o 圈圈 : 短虚线短虚线•c 蓝绿色蓝绿色 x x-符号符号 -. 长短线长短线 r 红色红色 • + 加号加号 -- 长虚线长虚线例例5-6 在同一坐标内,分别用不同线型和颜色绘制曲在同一坐标内,分别用不同线型和颜色绘制曲线线y1=0.2e-0.5xcos(4πx) 和和y2=2e-0.5xcos(πx),标记,标记两曲线交叉点。 两曲线交叉点程序如下:程序如下:x=linspace(0,2*pi,1000);y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);k=find(abs(y1-y2)<1e-2); %查找查找y1与与y2相等点相等点(近似相等近似相等)的下标的下标x1=x(k); %取取y1与与y2相等点的相等点的x坐标坐标y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); %求求y1与与y2值值相等点的相等点的y坐标坐标plot(x,y1,x,y2,'k:',x1,y3,'bp');例例 在在[0,2*pi]用红线画用红线画sin(x),用绿圈画用绿圈画cos(x). x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,'r',x,z,’go')解解3.1.6 图形标注与坐标控制图形标注与坐标控制1.图形标注.图形标注有关图形标注函数的调用格式为:有关图形标注函数的调用格式为:title(图形名称图形名称)xlabel(x轴说明轴说明)ylabel(y轴说明轴说明)text(x,y,图形说明图形说明)legend(图例图例1,图例图例2,…,pos):在在pos位置建立位置建立图例:图例:0〔自动取最佳位置),〔自动取最佳位置),1〔右上〔右上角,默认值),角,默认值),3〔左下角),〔左下角),4〔右下〔右下角),角),-1〔图外右侧)〔图外右侧)函数中的说明文字,除使用标准的函数中的说明文字,除使用标准的ASCII字符外,字符外,还可使用还可使用LaTeX格式的控制字符,这样就可以格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内在图形上添加希腊字母、数学符号及公式等内容。 例如,容例如,text(0.3,0.5,‘sin({\omega}t+{\beta})’)将得到标将得到标注效果注效果sin(ωt+β)例例5-7 在在0≤x≤2区间内,绘制曲线区间内,绘制曲线y1=2e-0.5x和和y2=cos(4πx),并给图形添加图形标注并给图形添加图形标注程序如下:程序如下:x=0:pi/100:2*pi;y1=2*exp(-0.5*x);y2=cos(4*pi*x);plot(x,y1,x,y2)title('x from 0 to 2{\pi}'); %加图形标题加图形标题xlabel('Variable X'); %加加X轴说明轴说明ylabel('Variable Y'); %加加Y轴说明轴说明text(0.8,1.5,'曲线曲线y1=2e^{-0.5x}'); %在指定位置添在指定位置添加图形说明加图形说明text(2.5,1.1,'曲线曲线y2=cos(4{\pi}x)'); Legend(‘y1’,’ y2’) %加图例加图例2.坐标控制.坐标控制axis函数的调用格式为:函数的调用格式为:axis([xmin xmax ymin ymax zmin zmax])axis函数功能丰富,常用的格式还有:函数功能丰富,常用的格式还有:axis equal:纵、横坐标轴采用等长刻度。 纵、横坐标轴采用等长刻度axis square:产生正方形坐标系:产生正方形坐标系(缺省为矩形缺省为矩形)axis auto:使用缺省设置使用缺省设置axis off:取消坐标轴取消坐标轴axis on:显示坐标轴显示坐标轴定制图形坐标定制图形坐标例例 在区间在区间[0 pi/2 0 5]显示显示tan(x)的图形解解 x = 0:.025:pi/2; plot(x,tan(x),'-ro') axis([0 pi/2 0 5])给坐标加网格线用给坐标加网格线用grid命令来控制命令来控制grid on/off命命令控制是画还是不画网格线,不带参数的令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换命令在两种状态之间进行切换给坐标加边框用给坐标加边框用box命令来控制命令来控制box on/off命令命令控制是加还是不加边框线,不带参数的控制是加还是不加边框线,不带参数的box命命令在两种状态之间进行切换令在两种状态之间进行切换例例5-8 在同一坐标中,绘制在同一坐标中,绘制3个同心圆,并加坐标个同心圆,并加坐标控制程序如下:程序如下:t=0:0.01:2*pi;x=exp(i*t);y=[x;2*x;3*x]';plot(y)grid on; %加网格线加网格线box on; %加坐标边框加坐标边框axis equal %坐标轴采用等刻度坐标轴采用等刻度3.1.7缩放图形缩放图形zoom on 单击鼠标左键,则在当前图形窗口中,以鼠标点单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大中的点为中心的图形放大2倍;单击鼠标右键,则缩倍;单击鼠标右键,则缩小小2倍倍解解 x=linspace(0,2*pi,30); y=sin(x); plot(x,y) zoom on 例例 缩放缩放y=sin(x)的图形的图形zoom off为当前图形打开缩放模式为当前图形打开缩放模式关闭缩放模式关闭缩放模式在在MATLAB中,利用中,利用meshgrid函数产生平面区域函数产生平面区域内的网格坐标矩阵。 其格式为:内的网格坐标矩阵其格式为:x=a:d1:b; y=c:d2:d;[X,Y]=meshgrid(x,y);语句执行后,矩阵语句执行后,矩阵X的每一行都是向量的每一行都是向量x,行数等,行数等于向量于向量y的元素的个数,矩阵的元素的个数,矩阵Y的每一列都是向的每一列都是向量量y,列数等于向量,列数等于向量x的元素的个数的元素的个数3.2 基本三维绘图命令•plot3(x,y,z,s)%绘制三维曲线绘制三维曲线•说明:说明:x,,y,,z必须是相同尺寸的数组,当是必须是相同尺寸的数组,当是向量时则绘制一条三维曲线,当是矩阵时绘制向量时则绘制一条三维曲线,当是矩阵时绘制多条曲线,三维曲线的条数等于矩阵的列数多条曲线,三维曲线的条数等于矩阵的列数3.2.1 三维曲线图三维曲线图 例例 在区间在区间[0,,10*pi]画出参数曲线画出参数曲线 x=sin(t),y=cos(t), z=t. 解解 t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) 例例 画多条曲线观察函数画多条曲线观察函数Z=(X+Y).^2. 解解 x=-3:0.1:3;y=1:0.1:5; [X,Y]=meshgrid(x,y); Z=(X+Y).^2; plot3(X,Y,Z)例例 画函数画函数Z=(X+Y).^2的图形的图形. 解解 x=-3:0.1:3; y=1:0.1:5; [X,Y]=meshgrid(x,y); Z=(X+Y).^2; surf(X,Y,Z) (1) surf(x,y,z)画出数据点〔画出数据点〔x,,y,,z〕表示的曲面〕表示的曲面数据矩阵。 分别数据矩阵分别表示数据点的横表示数据点的横坐标、纵坐标、坐标、纵坐标、函数值函数值3.2.2 三维曲面图三维曲面图((2)) Mesh(x,y,z) 解 x=-3:0.1:3; y=1:0.1:5; [X,Y]=meshgrid(x,y); Z=(X+Y).^2; mesh(X,Y,Z) 例例 画出画出Z=(X+Y).^2在的网格曲面图在的网格曲面图. 画网格曲面数据矩阵分别表示数据点的横坐标、纵坐标、函数值(3)meshz(X,Y,Z) 含零平面的网格图含零平面的网格图 上例中,若用上例中,若用 meshz(X,Y,Z),结果为:,结果为: Exercise•在0~10的坐标轴范围内绘制一条水平线,一条垂直线 y=0:0.02:10;x=0:0.02:10;plot(x,1,1,y)Exercise•运行以下命令:•>> x=[1 2 3;4 5 6]’;•>> plot(x,x,x,2*x)•则在图形窗口中绘制______条曲线 •A. 4 B. 6 C. 3 D. 5AExercise•运行以下命令:•>> x=[1 2 3;4 5 6];•>> y=x+x*i •>> plot(y)•则在图形窗口中绘制______条曲线。 •A. 3 B. 2 C. 6 D. 4AExercise•subplot(2,1,1)是指______的子图 •A. 两行一列的上图 • B. 两行一列的下图•C. 两列一行的左图 •D. 两列一行的右图A。












