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 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