Matlab——绘图(二维/三维/隐函数)

本篇博客是对educoder上相关题目/知识的总结

目录

前言

一、二维图形的绘制

1.楔子 

2. 绘图函数——plot函数 

第一种调用方法

第二种调用方法

第三种调用方式

3. 双纵坐标绘图函数——plotyy函数 

4. 绘制二维图形其他函数

5. 图形控制基本操作介绍

二、三维图形的绘制

1. 三维曲线

2. 三维曲面

3. 其他函数简介

三、隐函数绘图

总结


前言

知识/题目来自Educoder实训 


一、二维图形的绘制

1.楔子 

在已知两条直线的数学解析式的情况下,我们想知道两条直线在平面上的关系,除了进行数学上的求解,我们还有其他的方法直观的解决这个问题吗?

答案是肯定的,我们可以利用 MATLAB 强大的绘图功能在一个平面上画出这两条直线,我们就可以直观的了解两条直线是相交还是平行。

二维图像是指不包含深度信息的平面图像。 二维即左右、上下四个方向,不存在前后。即只有面积,没有体积。我们可以理解为将平面坐标上的数据点连接起来的平面图像,可以采用不同的坐标系,数据点可以为实数或者是复数,可以由向量或者矩阵的形式给出。 

2. 绘图函数——plot函数 

MATLAB 中最基础应用最广泛的函数是plot函数,它有许多的用法,接下对常用的使用方式进行介绍。

以下四种是没有选项的plot函数的主要使用方法:

  1. plot(x)
  2. plot(x,y)
  3. plot(x1,y1,x2,y2,...,xn,yn) 

第一种调用方法

x是实向量时,则以向量元素的下标为横坐标,元素值为纵坐标进行绘图;当x是复数向量时,以向量元素的实部和虚部为横纵坐标进行绘图;当x是实矩阵时,按列绘制每列元素值相对其下标的多条曲线,矩阵列数就是曲线的条数;当x是复数矩阵时,按列分别以向量元素的实部和虚部为横纵坐标进行多条曲线的绘图。

x为实矩阵的情况为例: 

  1. m=0:0.1:10;
  2. x=[cos(m)',sin(m)'];
  3. plot(x);

 输出图像如下:

Matlab——绘图(二维/三维/隐函数)_第1张图片

第二种调用方法

xy为长度相同的向量时,xy为横坐标和纵坐标;当x为向量,y为有一维与x同维的矩阵时,则绘制多条颜色不一样的曲线,曲线条数为矩阵的另一维;当xy为同维矩阵时,则以xy对应列元素为横,纵坐标分别绘制图形,曲线条数为矩阵的列数。 

xy为同维矩阵时举例,如下: 

  1. m=0:0.1:10;
  2. x=[2.*m',2.5.*m'];
  3. y=[cos(m)',sin(m)'];
  4. plot(x,y);

 输出图像如下:

Matlab——绘图(二维/三维/隐函数)_第2张图片

第三种调用方式

是包含多个输入参数的,每一个向量对可以绘制出一条曲线。当输入参数都为向量时,数字相同的xy为一组向量对,每组长度可以不同,每一向量对可以绘制出一条曲线;当xy为矩阵时,配对的xy分别按照对应的列元素为横纵坐标绘制曲线,曲线条数等于矩阵的列数。此处的x1xn可以相同。 

举例如下:

  1. m=0:0.1:10;
  2. x=[m;m;m]';
  3. y1=sin(m);
  4. y2=1.5*sin(m);
  5. y3=2.5*sin(m);
  6. y=[y1;y2;y3]';
  7. plot(x,y,m,cos(m));

输出结果如下:

xy都是含有三列的矩阵,所以有三条曲线,mcos(m)为向量,组成参数对,所以会绘制出一条曲线,一共有四条曲线。

Matlab——绘图(二维/三维/隐函数)_第3张图片

matlab 提供一些绘图选项,给出曲线的线型,颜色,数据点标记符号,使用方法如下:

  • plot(x1,y1,'选项1',...,xn,yn,'选项n')

选项表如下表所示:

Matlab——绘图(二维/三维/隐函数)_第4张图片

举例如下:

  1. m=0:0.1:10;
  2. x=2.*m;
  3. y=cos(x);
  4. plot(x,y,'r:')

输出结果如下:

Matlab——绘图(二维/三维/隐函数)_第5张图片

3. 双纵坐标绘图函数——plotyy函数 

当需要绘制出纵坐标不一致的两个图形时,可以直接用plotyy函数,可以把函数值不同量纲,不同数量级的函数绘制在一个图像中,便于比较分析。

调用格式为:

  • plotyy(x1,y1,x2,y2)

其中,x1,y1对于一条曲线,为左坐标,x2,y2对应另一条曲线,为右坐标。

举例如下:

  1. m=0:0.1:10;
  2. x=2.*m;
  3. y=cos(x);
  4. y1=sin(m);
  5. plotyy(x,y,m,y1)

输出图像如下:

Matlab——绘图(二维/三维/隐函数)_第6张图片

4. 绘制二维图形其他函数

  • 条形图:bar(x,y,选项)
  • 阶梯图:stairsx,y,选项)
  • 杆图:stem(x,y,选项)
  • 填充图: fill(x1,y1,选项1,x2,y2,选项2,...)
  • 极坐标图:polar(theta,rho,选项)theta为极角,rho为半径。
  • 对数坐标图形: semilogx(x1,y1,选项1,x2,y2,选项2,...)x半对数坐标,轴为对数刻度,y轴为线性刻度。 semilogy(x1,y1,选项1,x2,y2,选项2,...),半对数坐标,y轴为对数刻度,x轴为线性刻度。 loglog(x1,y1,选项1,x2,y2,选项2,...),全对数坐标,两个坐标轴都是对数刻度。

5. 图形控制基本操作介绍

  • title(图形说明)
  • xlabel(x轴说明)
  • ylabel(y轴说明)
  • text(x,y,图形说明)
  • legend(图例1,图例2,...)
  • axis([xmin xmax ymin ymax zmin zmax]),规定坐标轴范围。
  • grid on/off,有/无网格线。
  • box on/off,有/无边框线。

二、三维图形的绘制

在应用中广泛的除了平面上的曲线,还有的就是空间中的曲面。那么怎么绘制三维曲面呢?当函数的表达式不能表示为标准形式,怎么样绘制函数曲线呢?  

1. 三维曲线

最基本的三维图形函数是plot3,可以理解为二维绘图函数plot函数在三维的推广,可以类比学习。

调用格式如下:

  • plot3(x1,y1,z1,选项1,...,xn,yn,zn,选项n)

每对xyz为一组,绘制一个曲线,当xyz为同维向量时,则绘制一条三维曲线;当为同维矩阵时,xyz对应的列元素绘制曲线,曲线条数等于矩阵列数。

举例如下:

  1. m=0:0.1:100;
  2. x=5.*cos(m);
  3. y=4.*sin(m);
  4. z=-2.*sin(m);
  5. plot3(x,y,z)

输出结果如下:

Matlab——绘图(二维/三维/隐函数)_第7张图片

2. 三维曲面

要绘制三维曲面,首先要生成平面网格坐标矩阵,在xy平面选定一区域,假设长为[a,b],宽为[c,d]的一个区域,[a,b]x方向分成m份,[c,d]y方向分成n份,由划分线做直线,则平面被分为若干个矩形,生成每个矩形顶点坐标的平面网格坐标矩阵,然后利用函数绘图。

可以根据原理利用数学的方法来生成矩阵,也可以利用meshgrid函数生成。

  • [X,Y]=meshgrid(x,y)

输出X的每一行的数值都是复制的x的值;输出Y的每一列的数值都是复制的y的值。

举例如下:

  1. x=1:0.1:10;
  2. y=1:0.1:10;
  3. [X,Y]=meshgrid(x,y);

在生成网格坐标矩阵之后,来进行三维曲面的绘图,matlab中提供了mesh函数与surf函数来绘图,mesh函数用于绘制三维网格图,在不需要很精细的曲面图时,可以用网格图来表示三维曲面,surf函数用来绘制三维曲面图,线条之间用的补面用颜色填充。

调用格式如下:

  • mesh(x,y,z,c)
  • surf(x,y,z,c)

xyz是维数相同的矩阵,xy是网格坐标矩阵,z是高度矩阵,c指点不同高度下的颜色范围。当c缺省时,颜色正比于高度;当xy缺省时,z矩阵的列下标当作x轴坐标,行下标当作y轴坐标,绘制图形。若xy为向量,则xy的长度等于高度矩阵的列数与行数。

举例如下:

  1. x=0:0.1:2*pi;
  2. [X,Y]=meshgrid(x);
  3. z=1.5*sin(X).*cos(Y);
  4. surf(X,Y,z);

输出如下:

Matlab——绘图(二维/三维/隐函数)_第8张图片

3. 其他函数简介

与二维函数类似,三维图形也有一些函数来绘制特殊图形:

  • 三维条形图: bar3(y),y的每一个元素对应一个条形 bar3(x,y),在x指定的位置绘制y中元素的条形

  • 三维杆图 stem3(z),从x,y平面向上延伸的杆图,x,y自动生成 stem3(x,y,z),在x,y位置绘制,x,y,z维数相同

  • 三维饼图 pie3(x),x为向量,绘制三维饼图

  • 多边形 fill3(x,y,z,c),x,y,z为多边形顶点,c为颜色

matlab还提供一些其他的绘图函数,有兴趣的读者可以自行查找学习。

三、隐函数绘图

在绘图时,有时候没有显式的表达式或者表达式复杂难以化成标准形式时,我们可以使用隐函数绘图的函数ezplot函数。

常用用法如下:

对于隐函数f=f(x),ezplot函数调用格式如下:

  • ezplot(f):在[-2π,2π]中绘制f=f(x)图形;
  • ezplot(f,[a,b]):在[a,b]中绘制f=f(x)图形;

对于隐函数f=f(x,y),ezplot函数调用格式如下:

  • ezplot(f):在x属于[-2π,2π]y属于[-2π,2π]中绘制f(x,y)=0图形;
  • ezplot(f,[xmin,xmax,ymin,ymax]):在x属于[xmin,xmax]y属于[ymin,ymax]中绘制f(x,y)=0图形;
  • ezplot(f,[a,b]):在x属于[a,b]y属于[a,b]中绘制f(x,y)=0图形;

对于参数方程x=x(t)y=y(t),函数调用格式如下:

  • ezplot(x,y):在[0,2π]绘制x=x(t)y=y(t);
  • ezplot(x,y,[tmin,tmax]):在[tmin,tmax]绘制x=x(t)y=y(t);
  • 举例如下:
  1. ezplot('x^2+y^2-16');

输出图像如下:

Matlab——绘图(二维/三维/隐函数)_第9张图片


总结

多做题,多练习。熟能生巧,这是工科的规律。

你可能感兴趣的:(Matlab,matlab)