Making movies with subplot.

9 ビュー (過去 30 日間)
Guilherme Rocha
Guilherme Rocha 2015 年 11 月 28 日
回答済み: Guilherme Rocha 2015 年 11 月 28 日
I've been trying to export an animation with subplots. So far, the code is:
syms t;
l1 = 38;
l2 = 27;
l3 = 09;
T43 = [ 1 0 0 0 ; 0 1 0 0 ; 0 0 1 l1 ; 0 0 0 1 ];
T76 = [ 1 0 0 0 ; 0 1 0 0 ; 0 0 1 l2 ; 0 0 0 1 ];
T109= [ 1 0 0 0 ; 0 1 0 0 ; 0 0 1 l3 ; 0 0 0 1 ];
video = VideoWriter('newfile.mp4','MPEG-4');
open(video);
for t = 1:1:100
teta1 = pi+pi/4*(cos((pi/50)*t)-1); % ponto de referência = pi (0) -- variação = ( 0 -- -180 )
teta2 = (pi/2)*sin((pi/50)*t); %(7/12)*sin((pi/50)*t); % ponto de referência = 0 (0) -- variação = (30 -- 0 -- -180 )
teta3 = 0; % ponto de referência = 0(0) -- variação = (-90 -- 0 -- 90 )
teta4 = pi/4*(cos((pi/50)*t)-1); % ponto de referência = 0 (0) -- variação = (0 -- -150 )
teta5= 0; % ponto de referência = 0 (0) -- variação = (-90 -- 0 -- 90 )
teta6= 0; % ponto de referência = 0 (0) -- variação = (-90 -- 0 -- 90 )
teta7= 0; % ponto de referência = 0 (0) -- variação = (-30 -- 30 )
R10 = [ 1 0 0 0 ; 0 cos(teta1) -sin(teta1) 0 ; 0 sin(teta1) cos(teta1) 0 ; 0 0 0 1 ];
R21 = [ cos(teta2) 0 -sin(teta2) 0 ; 0 1 0 0 ; sin(teta2) 0 cos(teta2) 0 ; 0 0 0 1];
R32 = [ cos(teta3) sin(teta3) 0 0 ; -sin(teta3) cos(teta3) 0 0 ; 0 0 1 0 ; 0 0 0 1 ];
R54 = [ cos(teta4) 0 -sin(teta4) 0 ; 0 1 0 0 ; sin(teta4) 0 cos(teta4) 0 ; 0 0 0 1];
R65 = [ cos(teta5) sin(teta5) 0 0 ; -sin(teta5) cos(teta5) 0 0 ; 0 0 1 0 ; 0 0 0 1 ];
R87 = [ 1 0 0 0 ; 0 cos(teta6) -sin(teta6) 0 ; 0 sin(teta6) cos(teta6) 0 ; 0 0 0 1 ];
R98 = [ cos(teta7) 0 -sin(teta7) 0 ; 0 1 0 0 ; sin(teta7) 0 cos(teta7) 0 ; 0 0 0 1];
A = [0 0 0];
Br = R10*R21*R32*T43;
B = [ Br(1,4) Br(2,4) Br(3,4)];
Cr=R10*R21*R32*T43*R54*R65*T76;
C = [ Cr(1,4) Cr(2,4) Cr(3,4)];
Dr = R10*R21*R32*T43*R54*R65*T76*R87*R98*T109;
D = [ Dr(1,4) Dr(2,4) Dr(3,4)];
subplot(2,2,1)
plot3( [A(1),B(1)] , [A(2),B(2)] , [A(3),B(3)] , 'k-o' , 'LineWidth' , 1.5 )
hold on
plot3( [B(1),C(1)] , [B(2),C(2)] , [B(3),C(3)] , 'b-o' , 'LineWidth' , 1.5 )
hold on
plot3( [C(1),D(1)] , [C(2),D(2)] , [C(3),D(3)] , 'r-o' , 'LineWidth' , 1.5 )
xlabel('x (cm)') , ylabel('y (cm)') , zlabel('z (cm)')
title ( 'posição de referência ')
text(A(1),A(2),A(3),' A')
text(B(1),B(2),B(3),' B')
text(C(1),C(2),C(3),' C')
text(D(1),D(2),D(3),' D')
axis ([-100 100 -100 100 -100 100])
grid on
subplot(2,2,2)
plot( [A(1),B(1)] , [A(2),B(2)] , 'k-o' , 'LineWidth' , 1.5 )
hold on
plot( [B(1),C(1)] , [B(2),C(2)] , 'b-o' , 'LineWidth' , 1.5 )
hold on
plot( [C(1),D(1)] , [C(2),D(2)] , 'r-o' , 'LineWidth' , 1.5 )
xlabel('x (cm)') , ylabel('y (cm)')
title ( 'plano XY ')
text(A(1),A(2),' A')
text(B(1),B(2),' B')
text(C(1),C(2),' C')
text(D(1),D(2),' D')
axis ([-100 100 -100 100 ])
grid on
subplot(2,2,3)
plot( [A(1),B(1)] , [A(3),B(3)] , 'k-o' , 'LineWidth' , 1.5 )
hold on
plot( [B(1),C(1)] , [B(3),C(3)] , 'b-o' , 'LineWidth' , 1.5 )
hold on
plot( [C(1),D(1)] , [C(3),D(3)] , 'r-o' , 'LineWidth' , 1.5 )
xlabel('x (cm)') , ylabel('z (cm)')
title ( 'plano XZ ')
text(A(1),A(3),' A')
text(B(1),B(3),' B')
text(C(1),C(3),' C')
text(D(1),D(3),' D')
axis ([-100 100 -100 100 ])
grid on
subplot(2,2,4)
plot( [-A(2),-B(2)] , [A(3),B(3)] , 'k-o' , 'LineWidth' , 1.5 )
hold on
plot( [-B(2),-C(2)] , [B(3),C(3)] , 'b-o' , 'LineWidth' , 1.5 )
hold on
plot( [-C(2),-D(2)] , [C(3),D(3)] , 'r-o' , 'LineWidth' , 1.5 )
xlabel('y (cm)') , ylabel('z (cm)')
title ( 'plano YZ ')
text(-A(2),A(3),' A')
text(-B(2),B(3),' B')
text(-C(2),C(3),' C')
text(-D(2),D(3),' D')
axis ([-100 100 -100 100 ])
grid on
M(t) = getframe();
writeVideo(video,M);
clf
end
close(video);
The problem is that the exported mp4 file shows only the last subplot. Any help would be greatly appreciated, thanks in advance!

採用された回答

Image Analyst
Image Analyst 2015 年 11 月 28 日
Apparently by default it's getting the current axes, gca. Try getting the current figure, gcf:
thisFrame = getframe(gcf);
writeVideo(video, thisFrame);
No need to save the frame. Even if you did you'd have to use a cell array, not a regular numerical array like M, so you'd have to use braces not parentheses, but like I said there's no need to do that.

その他の回答 (1 件)

Guilherme Rocha
Guilherme Rocha 2015 年 11 月 28 日
Thank you so much. It worked perfectly.

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by