您现在的位置是:首页 > 名人名句

【MATLAB】plot函数详解

作者:胡椒时间:2024-05-11 14:16:50分类:名人名句

简介  文章浏览阅读2.1k次,点赞36次,收藏24次。详细解释MATLAB中的plot函数_matlab plot 函数

点击全文阅读

一、plot函数语法

plot(x,y,s)

二、用坐标绘制图形

        先看plot函数的基础部分:

plot(x,y)

        其中,x为横坐标,y为纵坐标。若要使用plot函数绘制线段,首先需要给定x、y的值。

        给变量赋值的语法为:

变量名 = [值1 值2 ... 值n];

        因此,若要表示点A(1,1)和B(2,2),对应的语法为:

x = [1 2];y = [1 2];

        注意:句尾分号的作用为不显示结果,不加分号则显示本行的结果。

        用plot函数绘制线段AB,语法为:

x = [1 2];y = [1 2];plot(x, y)

        效果如下:

6d2f7ba42dbf4c4a9f9b7034dc83f87a.png

        可以看到,通过使用plot函数,我们已经绘制了AB线段。但仔细观察我们发现,虽然线段在x、y轴上的长度都是1,可是实际的长度并不相同。为此,我们可以添加一条axis equal语句来使图像的x、y轴的比例相同:

x = [1 2];y = [1 2];plot(x, y)axis equal;

a81c5cefa1bb479f8e4636528dc8dc0f.png

        现在我们看到,添加axis equal语句后,x、y轴的刻度范围不一定相同,但比例是一定相同的。现在,若要画一条折线ABC,C的坐标为(3,1),可以分别给x、y添加一个新值:

x = [1 2 3];y = [1 2 1];plot(x, y)axis equal;

        运行,结果为:

11dfd889ff8a49aebbb74467353bcabf.png

        现在,若要绘制一个三角形ABC,还需要将折线的首尾相连:

x = [1 2 3 1];y = [1 2 1 1];plot(x, y)axis equal;

        运行,结果为:

9f233860890d4f6cb8e9a61d4e4a7868.png

        四边形、五边形、...  、n边形也是同理。现在尝试画一个五角星:

x = [3 5 7 2 8 3];y = [3 9 3 7 7 3];plot(x, y)axis equal;

        结果为:

5a31315c966343a78cf67a6fbb4f7b22.png

        图像的大概形状差不多,但还不是一个标准的五角星。下面介绍画图的第二种方法。

三、用函数绘制图形

        若想要用函数绘制图形,需要先设置自变量x的范围、y关于x的函数关系式或x、y的参数方程。

        方法一,使用y关于x的函数关系式:

        首先来看定义变量x的范围的语法:

x = 初始值:步长:最终值;

        初始值和最终值很好理解,步长的意思是从初始值到最终值的这条线上,每隔多长距离选取一个点。若步长为1,则代表,每隔1个单位长度选取一个点。在书写y关于x的关系式的时候,乘号不能省略。并且在matlab中,每个数都是一个矩阵,矩阵的幂运算用“^”运算符,涉及变量的幂运算时,要使用“.^”运算符。

        下面,我们来绘制一条x在[1,10]上,y=2x的直线:

x = 1:1:10;y = 2*x;plot(x, y)axis equal;

         运行效果如下:

d9c598dd3fb54497b38a194642a1c4f4.png

        学会如何绘制直线后,我们来学习如何绘制曲线。下面我们来尝试画一个圆:

        我们知道,圆的一般方程是(x-a)²+(x-b)²=r²,那么圆心在(2,2),半径为1的圆的一般方程为:(x-2)²+(y-2)²=1。整理得:y关于x的函数关系式为:y=√1-(x-2)² + 2。编写程序为:

x = 0:0.5:5;y = sqrt(1-(x-2).^2)+2;plot(x, y)axis equal;

        运行结果为:

d6d51213918e4835816b99e3d08d5c2d.png

         为什么图像是这样呢?两侧是直线的原因是,圆心在(2,2),半径为1的圆,x的范围只能在[1,3]之间,因此其他位置是直线。不像圆的原因是,步长0.5对于这个图形来说太大了,应该缩短步长,才更接近于曲线。图像只有半个圆的原因是,根号下不能小于零,所以y的值只能大于等于零。现在我们来修改一下程序:

        (注:绘制多个图像直接在plot函数的括号中再加一对x、y即可)

x = 1:0.01:3;y1 = sqrt(1-(x-2).^2)+2;y2 = -sqrt(1-(x-2).^2)+2;plot(x, y1, x, y2)axis equal;

         运行结果为:

7b5d0eec5e9a4549971fc7ed0615df9b.png

        很好!这样看起来就像一个圆了!由此我们可以得知,步长越短,图像越接近于曲线。我们再来尝试第二种方法——参数方程:

        我们知道,圆的参数方程为:

                x = a + rcosθ

                y = b + rsinθ

        这次,我们来绘制圆心为(1,1),半径为2的圆。这次我们要先设置一个变量theta,代码如下:

theta = 0:pi/100:2*pi;x = 1+2*cos(theta);y = 1+2*sin(theta);plot(x, y)axis equal;

        运行效果如下:

f0dc43e20f294b05898529755c3ef9a5.png

        和预期的完全一致!看来你已经学会了第二种方法!

        最后,我们来解决刚刚绘制五角星的问题。点围绕圆一共转了两圈,步长为4/5π。所以代码为:

theta = 0:4/5*pi:4*pi;x = 1+2*cos(theta);y = 1+2*sin(theta);plot(x, y)axis equal;

         运行效果为:

5155087b82584dbba4229e9c7af2af56.png

        已经是标准的五角星了!现在只需要旋转适当的角度就可以使五角星正过来:

theta = pi/10:4/5*pi:4*pi+pi/10;x = 1+2*cos(theta);y = 1+2*sin(theta);plot(x, y)axis equal;

        运行效果为:

2ebb65843c974b3b841f9a13507f3aac.png

        完美!接下来我们学习plot函数的更多用法:

四、绘制样式更丰富的图形

        plot(x,y,s)函数的s部分可以设置线的颜色、点的形式、线的形式。s部分要用单引号(' ')引起来。

        1、设置线的颜色:

                b(bule):蓝色

                g(green):绿色

                r(red):红色

                c(cyan):青色

                m(magenta):洋红色

                y(yellow):黄色

                k(black):黑色

                w(white):白色

        2、设置点的样式:

                .(点)

                o(圈)

                x(x标记)

                +(加号)

                *(星号)

                s(正方形)

                d(菱形)

                v(下三角)

                ^(上三角)

                <(左三角)

                >(右三角)

                p(五角星)

                h(六角星)

        3、设置线的样式:

                -(实线)

                :(点线)

                -.(点虚线)

                --(虚线)

                (none)(隐藏线)

        例如,要绘制红色,点为五角星,线为点虚线的线,语法为:

x = [1 2];y = [1 1];plot(x, y, 'rp-.')axis equal;

         运行结果为:

1eccef45ff7c4869a59a4b4fb00926b6.png

本章完。

感谢阅读!

点击全文阅读

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

我来说两句