Matlab使用comet绘制二维彗星动画图

4.6
(5)

今天,再给大家带来一篇关于Matlab绘制动画图的函数。本文,我们讲解Matlab中使用comet函数绘制二维彗星动画图。主要内容有:comet函数的常见用法、语法说明、创建彗星图、控制彗星主体长度、在指定坐标区中创建绘图等。

彗星是由标记(头部)和一条线(尾部)构成的动画,用于跟踪线条随数据点而不断变长的情况。尾巴是跟踪整个函数的实线。

Matlab使用comet绘制二维彗星动画图

下面,我们首先给出Matlab中关于comet函数的帮助文档如下:

>> help comet
 comet  Comet-like trajectory.
    comet(Y) displays an animated comet plot of the vector Y.
    comet(X,Y) displays an animated comet plot of vector Y vs. X.
    comet(X,Y,p) uses a comet of length p*length(Y).  Default is p = 0.10.
 
    comet(AX,...) plots into AX instead of GCA.
 
    Example:
        t = -pi:pi/200:pi;
        comet(t,tan(sin(t))-sin(tan(t)))

常见用法

comet(y)
comet(x,y)
comet(x,y,p)
comet(ax,x,y,p)

语法说明

comet(y) 显示 y 中指定的数据对每个值的索引的彗星图。彗星是由标记(头部)和一条线(尾部)构成的动画,用于跟踪线条随数据点而不断变长的情况。尾巴是跟踪整个函数的实线。

comet(x,y) 显示 y 对 x 的彗星图。

comet(x,y,p) 指定彗星主体长度。彗星主体是位于头部后的尾部段,此尾部段以不同颜色开始,但会渐变为相同颜色。主体长度为 p*length(y),其中 p 是 [0, 1) 范围内的一个标量。

comet(ax,x,y,p) 将彗星绘制到 ax 指定的坐标区中。

创建彗星图

创建 y 中数据对 x 中数据的彗星图。将 y 创建为正弦函数值向量,输入值介于 0 到 2π 之间。将 x 创建为余弦函数值向量,输入值介于 0 到 2π 之间。在各值之间使用递增量 π/100。然后绘制数据图。

t = 0:pi/100:2*pi;
y = sin(t);
x = cos(t);
comet(x,y)
Matlab使用comet绘制二维彗星动画图

控制彗星主体长度

创建一个彗星图,并通过设置缩放因子输入 p 来指定彗星主体的长度。彗星主体是位于头部后的尾部段,此尾部段以不同颜色开始,但会渐变为相同颜色。

将 x 和 y 创建为三角函数向量,输入值介于 0 到 4π 之间。将 p 指定为 0.5,以使彗星主体长度为 0.5*length(y)。然后绘制数据图。

t = 0:pi/50:4*pi;
x = -sin(t) - sin(t/2);
y = -cos(t) + cos(t/2);
p = 0.5;
comet(x,y,p)
Matlab使用comet绘制二维彗星动画图

在指定坐标区中创建绘图

通过指定每个图的目标坐标区,在分块图布局中创建两个彗星图。将两个数据集 x1 和 y1 以及 x2 和 y2 创建为三角函数向量,输入值介于 0 到 4π 之间。将主体长度缩放因子 p 指定为 0.25,以使主体长度为 0.25*length(y)。

t = 0:pi/20:4*pi;
x1 = -cos(t) + cos(t/2);
y1 = -sin(t) - sin(t/2);
x2 =  cos(t) - cos(t/2);
y2 = -sin(t) - sin(t/2);
p = 0.25;

将这两个 Axes 对象存储为 ax1 和 ax2。通过包含 Axes 对象作为 comet 的第一个输入参数,为每个彗星图指定目标坐标区。

tiledlayout(1,2);
ax1 = nexttile;
ax2 = nexttile;

comet(ax1,x1,y1,p)
comet(ax2,x2,y2,p)

由于古哥用的是Matlab2016版本,不支持tiledlayout函数以及nexttile函数。这里,我使用subplot代替,结果是一样的,修改后的代码如下:

subplot(1,2,1)
comet(x1,y1,p)

subplot(1,2,2)
comet(x2,y2,p)
Matlab使用comet绘制二维彗星动画图

共计5人评分,平均4.6

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

本文来自转载,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/program/matlab-function-comet.html

发表评论

登录后才能评论
本站APP
本站APP
分享本页
返回顶部