0

我当前的代码:

a=7
f=10
T=1/f;
v=40
wl=v/f;
x1=1;
x2=30
step=0.01

t=x1:step:x2;
x=x1:step:x2;
y=a*sind(2*pi*f*(t+(x*T)/wl)); 
h=plot3(x,y,t);
set(h,'EraseMode','xor','MarkerSize',20)
xlabel('displacement(m)');
ylabel('amplitude(m)');
title('Wave Animation');
for t=x1:step:x2
drawnow
y=a*sind(2*pi*f*(t+(x*T)/wl)); 
set(h,'YData',y)
pause(0.01)
end

我将它转换为 3D 网格图,但在动画中渲染需要很长时间并且 Matlab 崩溃。

a=7
f=10
T=1/f;
v=40
wl=v/f;
x1=1;
x2=30
step=0.01

t=x1:step:x2;
x=x1:step:x2;
[x,t] = meshgrid(x,t);
y     = a*sind(2*pi*f*(t+(x*T)/wl)); 
mesh(y)

对此进行动画处理的最佳方法是什么,使其看起来与制作 3D 之前的内容相似?

4

1 回答 1

0

如果您不能实时制作动画,一个简单的替代方法是使用getframemovie。您可以使用getframe可以生成它们的任何速率捕获帧,然后使用movie以更快的帧速率重放帧。有关简单示例,请参见getframe链接。

于 2013-05-07T19:03:30.327 回答