在matlab/octave中设置绘图/轨迹动画

在matlab/octave中设置绘图/轨迹动画,matlab,math,animation,3d,octave,Matlab,Math,Animation,3d,Octave,我正在尝试使用matlab/octave设置这个螺旋的动画,我希望它向上或向下螺旋 t = 0:0.1:10*pi; r = linspace (0, 1, numel (t)); z = linspace (0, 1, numel (t)); plot3 (r.*sin(t), r.*cos(t), z); 我尝试使用for循环来设置动画,但这只给了我一个圆锥体形状,请参见下面的代码和图像 clear all, clc,clf,tic t = 0:0.1:10*pi; r = linspa

我正在尝试使用matlab/octave设置这个螺旋的动画,我希望它向上或向下螺旋

t = 0:0.1:10*pi;
r = linspace (0, 1, numel (t));
z = linspace (0, 1, numel (t));
plot3 (r.*sin(t), r.*cos(t), z);

我尝试使用for循环来设置动画,但这只给了我一个圆锥体形状,请参见下面的代码和图像

clear all, clc,clf,tic
t = 0:0.1:10*pi;
r = linspace (0, 1, numel (t));
z = linspace (0, 1, numel (t));

for ii=1:length(r)
    ii
    plot3 (r.*sin(t(ii)), r.*cos(t(ii)), z);
    hold on
    %pause (.00001)
end

Image

当然不是最漂亮的,但是这些是您需要对代码进行的第一次更改,以便它能够实现您想要的功能

t = 0:0.1:10*pi;
z = linspace (1, 0, numel (t));
for ii=1:length(t)
    plot3 (z(ii)*sin(t(ii)),z(ii)*cos(t(ii)), z(ii));
    hold on
    pause (.00001)
end

以下内容似乎适用于倍频程3.6.2

t = 0:0.1:10*pi;
r = linspace (0, 1, numel (t));
z = linspace (0, 1, numel (t));

figure
axis([-1 1 -1 1 0 1])
hold on

for ii=1:length(r)
    plot3 (r(ii)*sin(t(ii)), r(ii)*cos(t(ii)), z(ii),'*');
    pause (.001)
end

您还可以使用
comet3()
软件包,该软件包可以为曲线图中的轨迹设置动画:

delay = 0.001  % seconds
figure
comet3(r.*sin(t), r.*cos(t), z, delay);
这使一个连续的轨迹成为动画,我更喜欢这个轨迹,而不是一个离散的*序列

一个缺点是,Octave 3.6.4附带的
comet
comet3
版本速度较慢,无论您使用的延迟如何。但这可以通过以下技巧克服:


次要注释:修改函数后,需要强制八度音重新加载。您可以重新启动,或者最好使用
clearcomet
clearcomet3
。下一次调用这些函数时,它们的定义将被刷新。

这不是轨迹解决方案,而是旋转的龙卷风

phi = linspace(0, 10*pi, 300);
r = linspace (0, 1, 300);
z = linspace (0, 1, 300);
s = 100; %speed of turning
for t = 0:0.01:10 %t is time
  plot3 (r.*sin(phi+t*s), r.*cos(phi+t*s), z);
  pause(0.01)
end

看看这个答案:Davin这只是给了我一个错误“第0行:所有边未定义或超出范围,因此没有绘图。”@RickT,以前从未使用过倍频程,我在Matlab上执行它,可能是兼容性/版本问题。您可以尝试添加
clear…
行,或将
plot3
替换为
scatter3
,这可能会有所帮助。如果不是的话,我就没有想法了。这很好,虽然它没有提供轨迹,只是一系列的点。有关设置轨迹动画的解决方案,请参见。
phi = linspace(0, 10*pi, 300);
r = linspace (0, 1, 300);
z = linspace (0, 1, 300);
s = 100; %speed of turning
for t = 0:0.01:10 %t is time
  plot3 (r.*sin(phi+t*s), r.*cos(phi+t*s), z);
  pause(0.01)
end