Matlab使用comet3绘制三维彗星动画图

4.5
(4)

今天,给大家带来最后一篇与Matlab动画图相关的文章,即Matlab使用comet3绘制三维彗星动画图。前文中,我们分别讲述过了《Matlab使用animatedline函数绘制动画》和《Matlab使用comet绘制二维彗星动画图》。本文,主要讲解Matlab中三维彗星图函数comet3的常见用法、语法说明、创建三维彗星图、控制彗星主体长度、在指定坐标区中绘制数据等用法。

Matlab使用comet3绘制三维彗星动画图

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

>> help comet3
 comet3 3-D Comet-like trajectories.
    comet3(Z) displays an animated three dimensional plot of the vector Z.
    comet3(X,Y,Z) displays an animated comet plot of the curve through the
    points [X(i),Y(i),Z(i)].
    comet3(X,Y,Z,p) uses a comet of length p*length(Z). Default is p = 0.1.
 
    comet3(AX,...) plots into AX instead of GCA.
 
    Example:
        t = -pi:pi/500:pi;
        comet3(sin(5*t),cos(3*t),t)

常见用法

comet3(z)
comet3(x,y,z)
comet3(x,y,z,p)
comet3(ax,x,y,z,p)

语法说明

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

comet3(x,y,z) 显示 z 对 x 和 y 的彗星图。

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

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

创建三维彗星图

创建 z 中数据对 x 和 y 中数据的彗星图。使用 peaks 函数以矩阵形式加载 x、y 和 z 数据。将数据转换为向量数组。然后绘制数据图。

[xmat,ymat,zmat] = peaks(100); 
xvec = xmat(:);
yvec = ymat(:);
zvec = zmat(:);
comet3(xvec,yvec,zvec)
Matlab使用comet3绘制三维彗星动画图

控制彗星主体长度

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

使用 peaks 函数以矩阵形式加载 x、y 和 z 数据。将数据转换为向量数组。将 p 指定为 0.5,以使主体长度为 0.5*length(y)。然后绘制数据图。

[xmat,ymat,zmat] = peaks(100); 
xvec = xmat(:);
yvec = ymat(:);
zvec = zmat(:);
p = 0.5;
comet3(xvec,yvec,zvec,p)
Matlab使用comet3绘制三维彗星动画图

在指定坐标区中绘制数据

通过指定每个图的目标坐标区,在分块图布局中创建两个彗星图。

使用 peaks 函数以矩阵形式加载 x、y 和 z 数据。将数据转换为向量数组。将主体长度缩放因子 p 指定为 0.25,以使主体长度为 0.5*length(y)。

[xmat,ymat,zmat] = peaks(50); 
xvec = xmat(:);
yvec = ymat(:);
zvec = zmat(:);
p = 0.25;

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

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

comet3(ax1,xvec,yvec,zvec,p)
comet3(ax2,yvec,xvec,zvec,p)

由于我用的是Matlab2016,不支持tiledlayout函数以及nexttile函数。因此,这里我用subplot函数代替,来绘制分区域的彗星图。修改后的代码如下:

subplot(1,2,1)
comet3(xvec,yvec,zvec,p)

subplot(1,2,2)
comet3(yvec,xvec,zvec,p)
Matlab使用comet3绘制三维彗星动画图

共计4人评分,平均4.5

到目前为止还没有投票~

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

让我们改善这篇文章!

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

文章目录

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

如若转载,请注明出处:https://iymark.com/articles/2173.html

(3)
微信公众号
古哥的头像古哥管理团队
上一篇 2021年03月20日 19:39
下一篇 2021年03月22日 20:52

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号