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