Synchronizing animated plot with video

조회 수: 5 (최근 30일)
Alex
Alex 2021년 6월 18일
편집: Alex 2021년 6월 18일
Hello,
i have the following code, which gives me two figures with animated plots (don't mind the german anootations). I now want to sync both of those plots with a mp4 video, so that when i run the skript, it opens the video and starts playing it along the 2 plots synchronised together.
Is that possible and if yes how?
Greatly appreaciate any help.
[Druck_offen_Differenz]=xlsread('25.05.2021_Test4_10mm.xlsx',1,'B64:B280');
[Kraft_offen]=xlsread('25.05.2021_Test4_10mm.xlsx',1,'L64:L280');
[Temperatur_offen]=xlsread('25.05.2021_Test4_10mm.xlsx',1,'D64:D280');
[Kraft_offen]=Kraft_offen*1;
[Zeit_offen]=0:0.1:(length(Druck_offen_Differenz)-1)*0.1;
[Kraft_offen_korrigiert]=(Kraft_offen-Kraft_offen(end));
[Druck_offen_gesamt]=[Druck_offen_Differenz]+1.013;
[Ausstroemzeit]=max(Zeit_offen);
[Druck_Differenz]=xlsread('25.05.2021_Test4_10mm.xlsx',1,'B64:B280');
[Kraft]=xlsread('25.05.2021_Test4_10mm.xlsx',1,'L64:L280');
[Temperatur]=xlsread('25.05.2021_Test4_10mm.xlsx',1,'D64:D280');
[Zeit]=0:0.1:(length(Druck_Differenz)-1)*0.1;
[Kraft]=[Kraft]*1;
[Kraft_korrigiert]=Kraft-Kraft(end);
p_Dampf=[0.1; 0.2; 0.3;0.4; 0.5; 0.6; 0.7; 0.8; 0.9; 1.0; 1.1; 1.2; 1.3; 1.4; 1.5; 1.6; 1.8; 2.0; 2.2; 2.4; 2.6; 2.8; 3.0; 3.2; 3.4; 3.6; 3.8; 4.0; 4.5; 5.0; 6.0; 7.0; 8.0; 9.0; 10.0; 11.0; 12.0; 13.0; 14.0; 15.0; 16.0; 17.0; 18.0; 19.0; 20.0];
T_Dampf=[45.83; 60.09; 69.12; 75.88; 81.35; 85.96; 89.95; 93.51; 96.71; 99.63; 102.32; 104.81; 107.31; 109.32; 111.4; 113.3; 116.9; 120.2; 123.3; 126.1; 128.7; 131.2; 133.5; 135.8; 137.9; 139.9; 141.8; 143.6; 147.9; 151.8; 158.8; 165.0; 170.4; 175.4; 179.9; 184.1; 188.0; 191.6; 195.0; 198.3; 201.4; 204.3; 207.1; 209.8; 212.4];
%% Bewegter Plot & Video der Messwerte ab der Ventilöffnung
% Eigenschaften der bewegten Linien festlegen
curve=animatedline('LineWidth',1,'color','k');
Kurve=animatedline('LineWidth',1, 'color', 'b');
Graph=animatedline('LineWidth',1, 'color', 'r');
% Eigenschaften der Führungsgeometrie festlegen
head = line('marker','o','color','b', 'xdata', Zeit_offen(1), 'ydata', Kraft_offen_korrigiert(1));
Kopf = line('marker','o','color','b', 'xdata', Zeit_offen(1), 'ydata', Druck_offen_Differenz(1));
circle = line('marker','o','color','b', 'xdata', Zeit_offen(1), 'ydata',Temperatur_offen(1));
% Festlegen der Abbildungseigenschaften
set(gca, 'XLim',[0 Ausstroemzeit+5], 'YLim', [0 200])
grid on;
xlabel('Zeit in [s]')
ylabel('Kraft in [N] & Druck in [bar] & Temperatur in [°C]')
title({'Heißwassertest' 'Messergebnis ab der Ventilöffnung' 'Blende 10 mm'})
legend('Schubkraft', 'Tankdifferenzdruck', 'Temperatur im Tank', 'Location', 'NorthEast')
% Darstellung des bewegten Plots
for i=1:length(Zeit_offen)
addpoints(curve, Zeit_offen(i), Kraft_offen_korrigiert(i));
addpoints(Kurve, Zeit_offen(i), Druck_offen_Differenz(i));
addpoints(Graph, Zeit_offen(i), Temperatur_offen(i));
set(head, 'xdata', Zeit_offen(i),'ydata', Kraft_offen_korrigiert(i));
set(Kopf, 'xdata', Zeit_offen(i),'ydata', Druck_offen_Differenz(i));
set(circle, 'xdata', Zeit_offen(i),'ydata', Temperatur_offen(i));
Frames(i)=getframe(gcf);
pause(0.1)
drawnow
end
% Erstellen des Videos
video = VideoWriter('Video_Heisswasser', 'MPEG-4');
video.FrameRate=length(Frames)/Ausstroemzeit;
open(video)
writeVideo(video,Frames)
close(video)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(2)
plot(T_Dampf, p_Dampf, '-b', Temperatur_offen, Druck_offen_gesamt, '--k', Temperatur_offen(1), Druck_offen_gesamt(1), '*k')
curve=animatedline('LineWidth',1,'color','k');
head = line('marker','o','color','r', 'xdata', Temperatur_offen(1), 'ydata',Druck_offen_gesamt(1));
% Festlegen der Abbildungseigenschaften (Zeile 84)
set(gca, 'XLim',[0 220], 'YLim', [0 20])
grid on;
ylabel('p in [bar]')
xlabel('T in [°C]')
title({'Heißwassertest' 'Zustandsgrößen im Tank ab der Ventilöffnung' 'p-T-Diagramm'})
legend('Dampfdruckkurve', 'Druckverlauf ab der Ventilöffnung' ,'Location', 'NorthEast')
% Darstellung des bewegten Plots
for i=1:length(Druck_offen_gesamt)
addpoints(curve, Temperatur_offen(i), Druck_offen_gesamt(i));
set(head, 'xdata', Temperatur(i),'ydata', Druck_offen_gesamt(i));
F(i)=getframe(gcf);
pause(0.1)
drawnow
end
% Erstellen des Videos für den Dampfdruckverlauf
video = VideoWriter('p_T_Diagramm', 'MPEG-4');
video.FrameRate=length(F)/Zeit_offen(end);
open(video)
writeVideo(video,F)
close(video)

답변 (0개)

카테고리

Help CenterFile Exchange에서 Animation에 대해 자세히 알아보기

태그

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by