Synchronizing animated plot with video

5 views (last 30 days)
Alex
Alex on 18 Jun 2021
Edited: Alex on 18 Jun 2021
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)

Answers (0)

Categories

Find more on Animation in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!