2013-05-07 4 views
0

Мой текущий код:Как оживить этот 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; 
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?

+0

Вам нужно вычислить y внутри цикла и сделать его зависимым от j, или ничего не изменится. – shoelzer

+0

@shoelzer Я получил его на работу, спасибо. Тем не менее, он медленно отображается, пока он хранит информацию в F, как предотвратить ее показ до использования «Movie (F)»? – NLed

ответ

0

Если вы не можете анимировать это в режиме реального времени, простая альтернатива использует getframe и movie. Вы используете getframe для захвата кадров с любой скоростью, которую вы можете сгенерировать, а затем используйте movie для воспроизведения кадров с более высокой частотой кадров. См. Ссылку getframe для простого примера.

+0

Я получил его на работу, спасибо. Тем не менее, он медленно отображается, пока он хранит информацию в F, как предотвратить ее показ до использования «Movie (F)»? – NLed

+0

@NLed Я не думаю, что вы можете помешать ему показать. Кадры должны быть сняты для захвата. – shoelzer

Смежные вопросы