# Optimization on movie command

3 vues (au cours des 30 derniers jours)
NGUYEN Quang Hung le 18 Mar 2015
Réponse apportée : John le 18 Mar 2015
Hi all, I use the movie command to make a animation on my plot: like this
close all;
clear all
clc;
figure('Renderer','zbuffer')
psy_0= linspace(1,20, 20);
s=size(psy_0);
psy_s=psy_0/1000;
z_mat=1;
con_mat=0.1;
h=10e-9;
e = 1.602e-19;
k_b = 1.381e-23;
T = 298;
Na = 6.022e23;
epsilon = 6.95e-10;
kappa = (z_mat*sqrt(con_mat)*1e10)/3.04
xi= linspace(0,h*kappa);
x= linspace(0,h);
y= size(x);
C= exp(-xi);
D=zeros(1,s(2));
z=zeros(1,s(2));
A=zeros(s(2),y(2));
B=zeros(s(2),y(2));
psy_seul_t=zeros(s(2),y(2));
set(gca,'NextPlot','replaceChildren');
F(20) = struct('cdata',[],'colormap',[]);
for j = 1:1:s(2)
z(j)=(e*psy_s(j)*z_mat)/(k_b*T);
D(j)= exp(z(j)/2);
A(j,:)= D(j) + 1 + (D(j) -1)*C;
B(j,:)= D(j) + 1 - (D(j)-1)*C;
psy_seul_t(j,:)= 2*log(A(j,:)./B(j,:));
psy_seul(j,:)= (psy_seul_t(j,:)*k_b*T)/e/z_mat;
psy_lin(j,:)= psy_s(j)*exp(-kappa*x);
hold all
plot(x,psy_lin(j,:),'r');
plot(x,psy_seul(j,:),'b');
axis([0 1e-8 0 0.025]);
F(j) = getframe;
end
It works well, however, the animation's speed is to high, so how can I reduce the animation's speed.
Secondly, I want to make a counter of j appear on the plot for each loop, does it possible?
And finally, how can I export to an . avi?
Best regards
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Réponses (1)

John le 18 Mar 2015
Hi Nguyen. you can set the frames-per-second for playback with the movie function. The function signature is something like this: movie(stack_name, number_of_times_to_repeat, frames_per_second)
When you playback with the movie function, set the frames_per_second to a small value between 1 and 8.
When I add the following to the end of your snippet, I get a pleasant animation of F:
movie(F, 1, 1)
Yes, you can display the loop number. Look up the text function and pay attention to the String property of the text object. Use it before getframe.
And yes, you can export to a .avi. You can use the VideoWriter function to create a video from the frame data in F (look at your code). Pay attention to the frame rate again. Also be sure to pass it the cdata field of each slice in F.
BTW please select this as an accepted answer if you found it useful.
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Animation dans Help Center et File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by