Synchronizing animated plot with video
5 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Animation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!