Animate 3D Plot View

176 visualizzazioni (ultimi 30 giorni)
Nick
Nick il 11 Set 2013
Risposto: John Navarro il 11 Mag 2021
I'm trying to create an animated GIF of a 3D plot by rotating the plot around, using a method similar to the Animated GIF example in the MATLAB File Exchange ( link ).
I was able to animate the figure on the screen using the view function and pause, but I'm having trouble turning this into a GIF. On the first i loop, on the second iteration (that is, k=2), when it gets to the line "im(:,:,1,k) = rgb2ind(f.cdata,map,'nodither');" it returns the following error:
Subscripted assignment dimension mismatch. Error in test_rotate (line 40) im(:,:,1,k) = rgb2ind(f.cdata,map,'nodither');
Any ideas? Thanks!
CODE:
plot3(xA,yA,zA,'-b',xB,yB,zB,'-r');
title('Plot Title')
xlabel('X data')
ylabel('Y data')
zlabel('Z data')
legend('Data A','Data B')
grid on
az = 0;
el = 90;
view([az,el])
degStep = 5;
detlaT = 0.1;
fCount = 71;
f = getframe;
[im,map] = rgb2ind(f.cdata,256,'nodither');
im(1,1,1,fCount) = 0;
k = 1;
% spin 45°
for i = 0:-degStep:-45
az = i;
([az,el])
f = getframe;
im(:,:,1,k) = rgb2ind(f.cdata,map,'nodither');
k = k + 1;
end
% tilt down
for i = 90:-degStep:15
el = i;
view([az,el])
f = getframe;
im(:,:,1,k) = rgb2ind(f.cdata,map,'nodither');
k = k + 1;
end
% spin left
for i = az:-degStep:-90
az = i;
view([az,el])
f = getframe;
im(:,:,1,k) = rgb2ind(f.cdata,map,'nodither');
k = k + 1;
end
% spin right
for i = az:degStep:0
az = i;
view([az,el])
f = getframe;
im(:,:,1,k) = rgb2ind(f.cdata,map,'nodither');
k = k + 1;
end
% tilt up to original
for i = el:degStep:90
el = i;
view([az,el])
f = getframe;
im(:,:,1,k) = rgb2ind(f.cdata,map,'nodither');
k = k + 1;
end
imwrite(im,map,'Animation.gif','DelayTime',detlaT,'LoopCount',inf)

Risposta accettata

Adam Filion
Adam Filion il 11 Set 2013
Hi Nick, you need to use
f = getframe(gcf)
instead of just 'getframe' to make sure it grabs the right figure window. I quickly tried it on my machine and that fixed it.
  1 Commento
Nick
Nick il 11 Set 2013
That did the trick, thanks so much!

Accedi per commentare.

Più risposte (2)

Carlos Ramos
Carlos Ramos il 18 Mar 2017
Excelente aporte.. mil gracias!!

John Navarro
John Navarro il 11 Mag 2021
Great answer, but...
Does someone know if it is an updated solution or a easier command for this problem? The accepted solution is from 2013

Categorie

Scopri di più su Animation in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by