Make Animation in matlab and save animation in matlab

4 ビュー (過去 30 日間)
Ivan Dwi Putra
Ivan Dwi Putra 2020 年 6 月 29 日
コメント済み: Ivan Dwi Putra 2020 年 7 月 1 日
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
  1. How i run animation in figure(3) and figure(4) at the same time?
  2. How i save the animation?
  3. How i open the animation only without run the code, only in video?

回答 (1 件)

Ivan Dwi Putra
Ivan Dwi Putra 2020 年 6 月 30 日
I already did that with this
fra = getframe(p3);
plot_i{i} = frame2im(fra);
[A{i},map{i}] = rgb2ind(plot_i{i},256);
based on your link but the problem, where i can find my file? and I have managed to do one chart but i need two graph run at the same time, in my code and my understanding it only figure(3) is run but figure (4) cannot Help me please. Thank you
  10 件のコメント
Ivan Dwi Putra
Ivan Dwi Putra 2020 年 7 月 1 日
I have learned form your code, Is it like this?
a = 1:1000;
b = x(:,1);
c = x(:,3);
%%
p3 = figure(3);
for i = 1:length(a)
subplot(2,1,1)
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);
for j = 1:length(d)
subplot(2,1,2)
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(p3);
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
still only x(:,1) and x(:,3) is appear. Help me please
Ivan Dwi Putra
Ivan Dwi Putra 2020 年 7 月 1 日
if it can't be a subplot, then x(:,2), x(:,4) in figure 4 also doesn't matter

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeAnimation についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by