gpt4 book ai didi

matlab - 在 matlab/octave 中制作动画图/轨迹

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:48 33 4
gpt4 key购买 nike

我正在尝试使用 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);

spiral

我尝试使用 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

图片enter image description here

最佳答案

您还可以使用 comet3() 程序包,它为绘图中的轨迹设置动画:

delay = 0.001  % seconds
figure
comet3(r.*sin(t), r.*cos(t), z, delay);

与离散的 * 序列相比,我更喜欢连续轨迹的动画。

一个缺点是 Octave 3.6.4 附带的 cometcomet3 版本很慢,无论您​​使用的延迟如何。但这可以通过使用 andyras in this SO question 提供的以下技巧来克服。 :

% plot the first point to get started
h = plot3(x(1),y(1),z(1),"b");
axis([min(x), max(x), min(y), max(y), min(z), max(z)]);

% refresh the plot in a loop through the rest of the data
for k = 1:length(z);
set(h, 'XData', x(1:k));
set(h, 'YData', y(1:k));
set(h, 'ZData', z(1:k));
pause (0.001); % delay in seconds
% alternatively could provide a velocity function
% pause(sqrt(vx(k)^2+vy(k)^2+vz(k)^2));
endfor

小提示:修改函数后,您需要强制 Octave 重新加载它 as it won't do this by default .您可以重新启动,或者更好地使用 clear cometclear comet3。然后下次调用这些函数时,它们的定义将被刷新。

关于matlab - 在 matlab/octave 中制作动画图/轨迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16574126/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com