Matlab画图(重要)

第一部分:二维绘图方法

一、绘图命令

(1)plot函数

plot函数既可以对向量作图,也可以对矩阵作图

基本的作图命令使用plot函数即可,而在使用的时候有几个需要注意的地方:

1、四种linestyle:-  --  -.  :

 2、 八种color: r   g   b   y  w  k  m  c

 3、十三种标记: .    o   +    x    *   s    d    p   h    <    >     ^     v

Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示:

线型

颜色

标记符号

- 实线

b蓝色

.   点

s 方块

: 虚线

g绿色

o 圆圈

d 菱形

-. 点划线

r红色

× 叉号

∨朝下三角符号

-- 双划线

c青色

+ 加号

∧朝上三角符号

m品红

* 星号

<朝左三角符号

y黄色

>朝右三角符号

k黑色

p 五角星

w白色

h 六角星

(2)、绘制双纵坐标的plotyy函数

在Matlab中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy函数,它能把具有不同量纲,不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析。使用格式为:plotyy(x1,y1,x2,y2)

x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左边的对应x1,y1数据对,右边的对应x2,y2。

比如下图所示的图示:

x=0:2*pi/100:2*pi;
>> y=sin(x);
>> y1=x.*sin(x);
>> plotyy(x,y,x,y1)

二、绘图后的辅助操作

     为了使图形意义更加明确,可读性更强,绘制完图形以后,可能还需要对图形进行一些辅助操作,下面是一些操作命令。

1.添加图形标注

       在绘制图形时,可以对图形加上一些说明,如图形的名称、坐标轴说明以及图形某一部分的含义等,这些操作称为添加图形标注。有关图形标注函数的调用格式为:

title(’图形名称’)

xlabel(’x轴说明’)

ylabel(’y轴说明’)

text(x,y,’图形说明’)

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

尤其注意的是:括号内的内容需要使用单引号来操作

其中,title、xlabel和ylabel函数分别用于说明图形和坐标轴的名称。text函数是在坐标点(x,y)处添加图形说明。

下面是一个使用title、xlabel、ylabel之后做的图;

       legend函数用于绘制曲线所用的线型、颜色或数据点标记图例,图例放置在空白处,用户还可以通过鼠标移动图例,将其放到所希望的位置。(这里是否有其他命令可以操作需要打一个问号?)除legend函数外,其他函数同样适用于三维图形,在三维中z坐标轴说明用zlabel函数。

下面以一个实例图进行展示legend作图后的效果:

(2)坐标轴的控制操作

   对坐标轴可以对坐标轴进行一定的操作,比如在绘制图形时,Matlab可以自动根据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清晰的显示出来。所以,一般情况下用户不必自行的选择坐标轴的刻度范围。但是,有时候,如果用户对坐标不满意,需要对坐标轴进行一定的操作,那么就需要用到axis函数命令。其中axis函数的调用格式如下所示(在之前的一篇文章中也有详细的介绍,这里再简单回顾一下):

axis([xmin xmax ymin ymax zmin zmax])

如果是绘制二维坐标图,那么只需要给出前四个参数,那么Matlab则会按照给出的x、y轴的最小值和最大值选择坐标系范围,如果需要绘制三维坐标图,则需要给出全部参数。

另外,axis函数的功能比较丰富,其常用的用法还有:

axis on :显示坐标轴

axis off:取消坐标轴

axis equal :纵横坐标轴采用等长刻度

axis square:产生正方形坐标系(默认为矩形)

如采用axis square来作图可以得到如下的图示:

那么如果要是给坐标添加网格线和边框需要怎么办呢?

1、给坐标加网格线可以用grid命令来实现,grid on/off命令控制画还是不画网格线,不带参数的grid命令在两种之间进行切换。可以看到默认情况下是不画网格线的。

2、给坐标加边框用box命令控制。和grid一样用法。默认情况下,图示是加上了边框,输入一次box就去掉了边框。

注意:默认情况下,图示坐标是不加网格线的,也加上了边框,分别输入grid和box 即分别将网格线加上,边框去掉。

(3) 图形窗口分割

       在实际应用中,经常需要在一个图形窗口中绘制若干个独立的图形,这就需要对图形窗口进行分割。分割后的图形窗口由若干个绘图区组成,每一个绘图区可以建立独立的坐标系并绘制图形。同一图形窗口下的不同图形称为子图。

      Matlab提供了subplot函数用来将当前窗口分割成若干个绘图区,每个区域代表一个独立的子图,也是一个独立的坐标系,可以通过subplot函数激活某一区,该区为活动区,所发出的绘图命令都是作用于该活动区域。调用格式:

     subplot(m,n,p)

该函数把当前窗口分成m×n个绘图区,也就是说将绘图区分成m行,每行n个绘图区,而p代表第p个区为当前活动区。每一个绘图区允许以不同的坐标系单独绘制图形。

如输入subplot(3,3,2),

则会将绘图区域分成3行3列,其中2代表目前的活动区域是第二个子图绘制区域,那么在接着输入:

plot(x,y)后得到如下的图示:

第二部分:绘制三维图像

(1)plot3函数绘制三维曲线

将二维作图函数plot推广到三维函数即得到plot3,plot3是绘制三维图像的基本函数,其调用格式为:

plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…)

其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot的选项一样。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵的列数。

下面是一个实例展示:

x=0:2*pi/100:2*pi;
y=sin(x).*cos(x).*x;
z=-5*sqrt(2)*cos(x);
plot3(x,y,z,'r*');

备注:可以将二维作图的思想扩展到三维作图中;

(2)绘制三维曲面

1.平面网格坐标矩阵的生成

        这里设z=f(x,y),在绘制z=f(x,y)所代表的三维曲面图时,先要在xy平面上选定一个矩形区域,假定矩形区域为D=[a,b]×[c,d],然后将[a,b]在x方向分成m份,将[c,d]在y方向分成n份,由各划分点做平行轴的直线,把区域D分成m×n个小矩形。具体的可以想象成很多个网格,然后使用相关的函数绘制图像即可。

产生平面区域内的网格坐标矩阵有两种方法:

方法一:利用矩阵运算方法生成。

x=a:dx:b;

y=(c:dy:d)’;

X=ones(size(y))*x;

Y=y*ones(size(x));

      经过上述语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素个数,矩阵Y的每一列均是向量y,列数等于向量x的元素个数。

方法二:利用meshgrid函数生成;

x=a:dx:b;

y=c:dy:d;

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

语句执行后,所得到的网格坐标矩阵和上面的利用矩阵运算方法得到的网格坐标矩阵相同,

备注:当x=y时,可以写成meshgrid(x),可以看到meshgrid函数相比矩阵运算的方法更方便好用。

2.绘制三维曲面的函数

      Matlab提供了mesh函数和surf函数来绘制三维曲面图。mesh函数用来绘制三维网格图,而surf用来绘制三维曲面图,各线条之间的补面用颜色填充。其调用格式为:

mesh(x,y,z,c)

surf(x,y,z,c)

      一般情况下,x,y,z是维数相同的矩阵,x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。

        c省略时,Matlab认为c=z,也即颜色的设定是正比于图形的高度的。这样就可以得到层次分明的三维图形。

       当x,y省略时,把z矩阵的列下标当作x轴的坐标,把z矩阵的行下标当作y轴的坐标,然后绘制三维图形。

        当x,y是向量时,要求x的长度必须等于z矩阵的列,y的长度必须等于z的行,x,y向量元素的组合构成网格点的x,y坐标,z坐标则取自z矩阵,然后绘制三维曲线。

备注:在绘制三维图像的时候,有三个函数可以使用,surf,mesh,plot3函数,plots既可以用来绘制三维曲线也可以用来绘制三维曲面;surf和mesh用来绘制三维曲面;并且在绘制三维曲面的时候需要用到矩阵计算或者meshgrid函数两种方法生成平面坐标平面,然后在使用三个函数绘制三维图像。

一句话,绘制三维曲面时,首先使用meshgrid函数生成平面坐标矩阵,然后使用plots()、surf()、mesh()三个函数绘制三维曲面。

(3)绘制标准三维曲面(如圆柱面、球面等三维曲面)

     1、sphere函数绘制三维球面

         [x,y,z]=sphere(n);

     该函数将产生(n+1)×(n+1)矩阵x,y,z 。采用这三个矩阵可以绘制出圆心位于原点、半径为1的单位球体。若在调用该函数时不带输出参数,则直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20。若n值取的比较小,则绘制出多面体的表面图。

    2、cylinder函数绘制圆柱面

    [x,y,z]=cylinder(R,n)

     其中R是一个向量,存放的是柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。如:cylinder(3)生成一个圆柱,cylinder([10,1])生成一个圆锥。而t=0:pi/100:4*pi; R=sin(t); cylinder(R,30);生成一个正弦圆柱面。

    3、peaks函数,称为多峰函数。

猜你喜欢

转载自blog.csdn.net/qq_25018077/article/details/88110949
今日推荐