加入收藏
大学数学, 研究生数学,大学数学资料下载,免费 大学数学课件,研究生数学课件,免费下载
第3讲 MATLAB绘图
2014-11-18 06:18:56

3.1  二维图形

3.1.1绘制二维曲线的最基本函数

1. plot函数的基本用法

plot函数的基本调用格式为:plot(x,y)

其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。

例3.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)

例3.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数据对。


例3.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);

3.1.2  绘制图形的辅助操作

   1. 图形标注

  有关图形标注函数的调用格式为:

   title(图形名称)

   xlabel(x轴说明)

   ylabel(y轴说明)

   text(x,y,图形说明)

   legend(图例1,图例2,…)


例3.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命令在两种状态之间进行切换。

例3.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)

   例3.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]);


3.1.3  绘制二维图形的其他函数

1. 其他形式的线性直角坐标图

在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:

bar(x,y,选项)

stairs(x,y,选项)

stem(x,y,选项)

fill(x1,y1,选项1,x2,y2,选项2,…)

 例3.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函数相似。

例3.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,…)


   例3.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,选项)

例3.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提供的绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。

例3.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('相量图');


3.2  三维图形

3.2.1绘制三维曲线的最基本函数

   plot3函数与plot函数用法十分相似,其调用格式为:

   plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)

   例3.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;


3.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);

例3.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)

例3.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;

例3.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 函数,称为多峰函数,常用于三维曲面的演示。

3.2.3  其他三维图形

  条形图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、pie3和fill3。此外,还有三维曲面的等高线图。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。

  例3.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');

赞一个(230) | 阅读(1709)
上一篇:第2讲 MATLAB程序设计
下一篇:第4讲 MATLAB数值计算(一)
 

胡桃木屋版权所有@2013 湘ICP备13006789号-1