今天,再给大家带来一篇关于Matlab绘制动画图的函数。本文,我们讲解Matlab中使用comet函数绘制二维彗星动画图。主要内容有: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)
控制彗星主体长度
创建一个彗星图,并通过设置缩放因子输入 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)
在指定坐标区中创建绘图
通过指定每个图的目标坐标区,在分块图布局中创建两个彗星图。将两个数据集 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)
转载文章,原文出处:MathWorks官网,由古哥整理发布
如若转载,请注明出处:https://iymark.com/articles/2157.html