Make Animation in matlab and save animation in matlab
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
This is my code represent the my model
function dx = trainfinalmodel(t,x)
%Parameter Massa
m1 = 8095; % massa train set 1 dalam kg
m2 = 8500; % massa train set 2 dalam kg
g = 10;
%Parameter Gaya
f1 = 205.10^3; % dalam N
f2 = 302.10^3; % dalam N
c_0_1 = 0.01176;
c_1_1 = 0.00077616;
c_2_1 = 4.48 ;
c_0_2 = 0.01176 ;
c_1_2 = 0.00077616;
c_2_2 = 4.48;
v_0 = 300;
hstar = 120;
a_1 = -1./m1.*(c_1_1 + 2.*c_2_1.*v_0);
a_2 = -1./m2.*(c_1_2 + 2.*c_2_2.*v_0);
a_1_head = 1-(a_1.*hstar);
a_2_head = 1-(a_2.*hstar);
b = 1;
p_1 = -1./m1.*(c_0_1 - c_2_1.*(v_0).^2);
p_2 = -1./m2.*(c_0_2 - c_2_2.*(v_0).^2);
x = [x(1);x(2);x(3);x(4)];
A = [0 a_1_head 0 0;
0 0 0 0;
0 (a_2_head - 1) 0 a_2_head;
0 0 0 0
];
B = [-b.*hstar 0;
b 0;
0 -b.*hstar;
-b b
];
U_t = [f1; f2;];
W = [((a_1 - 1).*v_0) - (p_1.*hstar);
0;
((a_2 - 1).*v_0) - (p_2.*hstar);
((a_1 - 1).*v_0) - (p_1.*hstar);
];
dx = (A*x) + (B*U_t) + W;
end
This is the code for ode45
clear all, close all
tspan = [0:1:1000];
x0 = [0; 0; 100; 0];
figure(1)
[t,x] = ode45(@trainfinalmodel,tspan,x0);
plot(t,x)
legend('x1','x2','x3','x4')
title('Non Linear Model')
xlabel('Waktu(s)')
ylabel('Jarak(m)')
figure(2)
subplot(2,1,1);
hax1 = plot(t,x(:,1),t,x(:,3))
title('Posisi Rangkaian Kereta')
xlabel('Waktu(s)')
ylabel('Jarak(m)')
legend('x_1','x_3')
subplot(2,1,2);
hax2 = plot(t,x(:,2),t,x(:,4))
title('Kecepatan Rangkaian Kereta')
xlabel('Waktu(s)')
ylabel('Kecepatan(m/s)')
legend('x_2','x_4')
and this is the code for animation
a = 1:1000;
b = x(:,1);
c = x(:,3);
%%
p3 = figure(3);
for i = 1:length(a)
plot(b(1:i),'-r*');
hold on;
plot(c(1:i),'-b*');
title('Posisi Rangkaian Kereta')
xlim([1 1000])
xlabel('Waktu(s)')
ylabel('Jarak(m)')
legend('x_1','x_3')
fra = getframe(p3);
plot_i{i} = frame2im(fra);
[A{i},map{i}] = rgb2ind(plot_i{i},256);
end
%%
for i = 1:length(a)
imwrite(A{i},map{i},'check_gif.gif','gif','WriteMode','append',...
'DelayTime',2);
end
%%
d = 1:1000;
e = x(:,2);
f = x(:,4);
%%
p4 = figure(4);
for j = 1:length(d)
plot(e(1:j),'-r*');
hold on;
plot(f(1:j),'-b*');
title('Posisi Rangkaian Kereta')
xlim([1 1000])
xlabel('Waktu(s)')
ylabel('Jarak(m)')
legend('x_2','x_4')
fra = getframe(p4);
plot_j{j} = frame2im(fra);
[B{j},map{j}] = rgb2ind(plot_j{j},256);
end
%%
for j = 1:length(d)
imwrite(B{j},map{j},'check_gif1.gif','gif','WriteMode','append',...
'DelayTime',2);
end
from my animation code only figure(3) is run, figure(4) doesn't run, so I have 3 question
- How i run animation in figure(3) and figure(4) at the same time?
- How i save the animation?
- How i open the animation only without run the code, only in video?
Risposte (1)
Vedere anche
Categorie
Scopri di più su Animation in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!