Problem with animated a 'surf' plot

I have a 3D-data structure which is effectively a series of 2D matrices which are used to built a 3d-surface plot. I'm trying to stitch them together into an animation, but all that seems to be grabbed is white space...
The code I'm using is below and I would be so grateful to anyone who could tell me what I'm doing wrong.
Zlim = max(max(max(Psi)));
NFrames = Nz;
%Window = gca;
Frames = moviein(NFrames);
%colormap('jet')
%map=jet;
for i = 1:NFrames
surf(Psi(:,:,i));
h= get(gcf,'CurrentAxes');
zlim([0 Zlim]);
Frames(i) = getframe(h);
%Frames(i) = getframe;
end
%clf
movie2avi(Frames,'Output.avi','compression','Cinepak','fps',3);
%close(Window);

Réponses (2)

Fangjun Jiang
Fangjun Jiang le 4 Août 2011

0 votes

Well, I don't have your data. But I tried and it did show the animation. Maybe check your data Psi?
I used this and then run your code. The output.avi is correct too.
Psi=rand(100,100,10);
Nz=10;
Charles
Charles le 4 Août 2011

0 votes

Many thanks! I'm fairly certain the data's ok, as I see the graphs being plotted as the script runs (the data is generated by some C++ code). So I've tried to simplify:
Zlim = max(max(max(Psi))); Fig = newplot; FigHandle = get(Fig,'Parent'); Frames = moviein(Nz,FigHandle);
colormap('jet')
for i = 1:Nz surf(Psi(:,:,i)); zlim([0 Zlim]); Frames(:,i) = getframe(FigHandle); end
movie2avi(Frames,'OutputXY.avi','compression','Cinepak','fps',5);
When I run this, the surf plots are made, but the movie grabs only some empty, 2D axes.

1 commentaire

Fangjun Jiang
Fangjun Jiang le 4 Août 2011
Again, I don't have your data. Did you try my example using the random data? Did it show correctly and did you check whether Output.avi plays outside of MATLAB?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Animation dans Centre d'aide et File Exchange

Question posée :

le 3 Août 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by