WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Kann ich irgendwie meinen Plot als video aufnehmen?

 

m.l.90
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2016, 13:27     Titel: Kann ich irgendwie meinen Plot als video aufnehmen?
  Antworten mit Zitat      
Hallo Leute,

ich hab ein Skript geschrieben in dem ich in einem figure drei plots darstelle die alle durch drawnow annimiert dargestellt werden. Hier ein ausschnitt :
Code:

hold on
subplot(3,1,1);    
p1 =  handle(plot(Time(1),Velocity(1),'o','MarkerFaceColor','red'));
hold off
for k = 2:length(Time)
    subplot(3,1,1);
    p1.XData = Time(k);
    p1.YData = Velocity(k);
    drawnow
end
 

Nun will ich den Plot am liebsten aufnehmen um ihn mir immer wieder anzuschauen oder z.B. in einer Präsentation zu zeigen.
Hierfür hab ich bisher nur den Befehl getframe gefunden, jedoch funktioniert dies gar nicht bei mir.
Habt ihr ne Idee??
Besten Dank schonmal im vorraus
Miki
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.04.2016, 13:47     Titel: Re: Kann ich irgendwie meinen Plot als video aufnehmen?
  Antworten mit Zitat      
Hallo m.l.90,

Der Befehl getframe ist schon richtig. Wenn er bei Dir "gar nicht funktioniert", poste doch mal den Code und beschreibe die Probleme mit den notwendigen Details. Bekommst Du Fehlermedlungen oder weicht das Ergebnis von Deinen Erwartungen ab?

Im Internet findet man eine Menge Beispiele dazu. Nach "Matlab getframe movie" zu suchen, ist sicherlich eine gute Idee.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
m.l.90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2016, 13:57     Titel:
  Antworten mit Zitat      
Hallo Jan S,

also die Sache ist wenn ich nach dem ich einmal die sachen geplottet hab und durch getframe in M gescheichert habe, wird mir zunächst ein 2D plot dargestellt mit weiser Fläche und unbeschrifteten Achsen, kurz darauf startet erneut die animation, jedoch verschoben nach oben rechts um die breite der Achsen...
wie könnte ich diesen fehler beheben?
und wie könnte ich nun diese animation abspeichern damit ich dies z.B. in einer Powerpoint präsentation zeigen kann?
Code:

hold on
subplot(3,1,1);    
p1 =  handle(plot(Time(1),Velocity(1),'o','MarkerFaceColor','red'));
hold off
for k = 2:length(Time)
    subplot(3,1,1);
    p1.XData = Time(k);
    p1.YData = Velocity(k);
    drawnow
    M=getframe(gcf)
end


 movie(M)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.04.2016, 14:07     Titel:
  Antworten mit Zitat      
Hallo,

du überschreibst M in jeder Iteration. Stattdessen solltest du ein Array von Frames erstellen, wie es auch in der Doku von getframe zu sehen ist:
Code:
M(k)=getframe(gcf); % oder k-1


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
m.l.90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2016, 14:22     Titel:
  Antworten mit Zitat      
Hallo Harald,
Danke für den Hinweis, habs aber nur falsch abgeschrieben Smile.
Also habs in meinem Skript so stehen wie du geschrieben hast.
Hab aber diesen Fehler trotzdem wenn ich movie(M) ausführe..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.04.2016, 14:26     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
wird mir zunächst ein 2D plot dargestellt mit weiser Fläche und unbeschrifteten Achsen

Setzt du denn M(1) irgendwo?

Zitat:
jedoch verschoben nach oben rechts um die breite der Achsen...

Das verstehe ich nicht.

Ein reproduzierbares Beispiel wäre hilfreich.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
m.l.90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.04.2016, 09:08     Titel:
  Antworten mit Zitat      
Zitat:

Zitat:

Zitat:
wird mir zunächst ein 2D plot dargestellt mit weiser Fläche und unbeschrifteten Achsen

Setzt du denn M(1) irgendwo?

Ne habe nirgendwo M(1) gesetzt gehabt, hab es jetzt nachgeholt.

Zitat:
Ein reproduzierbares Beispiel wäre hilfreich.

Hier ein Beispiel:
Code:

subplot(3,1,1);     % top subplot
plot(time,Temp,'red')
title('Temperatur')
xlabel('Time [s]')
ylabel('Temperatur [°]')
hold on
subplot(3,1,2);     % middle subplot
plot(time,Geschw,'red')
title('Geschwindigkeit')
xlabel('Time [s]')
ylabel('Geschwindigkeit')
hold on
subplot(3,1,3);     % bottom subplot
plot(time,Höhe,'red')
title('Höhe')
xlabel('Time [s]')
ylabel('Höhe')
hold on

M(399) = struct('cdata',[],'colormap',[]);
M(1)=getframe(gcf);

for k = 2:length(time)
    subplot(3,1,1);
    p1.XData = time(k);
    p1.YData = TEMP(k);
    drawnow
    subplot(3,1,2);    
    p2.XData = time(k);
    p2.YData = Geschw(k);
    drawnow
    subplot(3,1,3);    
    p3.XData = time(k);
    p3.YData = Höhe(k);
    drawnow
   
    M(k)=getframe(gcf);
end
movie2avi(M,'Film.avi','compression','None');


So, als Fehlermeldung bekomme ich nun folgendes:
Code:

Error using avi
Unexpected Error. Reason: Failed to open file.

Error in avifile (line 177)
  aviobj.FileHandle = avi('open',filename);

Error in movie2avi (line 66)
avimov = avifile(filename,varargin{:});

Error in Trace_Kennfeld4 (line 99)
movie2avi(M,'Film.avi','compression','None');


Hoffe Ihr könnt mir jetzt helfen Sad ??
Private Nachricht senden Benutzer-Profile anzeigen
 
m.l.90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.04.2016, 09:12     Titel:
  Antworten mit Zitat      
Zitat:
subplot(3,1,1); % top subplot
plot(time,Temp,'red')
title('Temperatur')
xlabel('Time [s]')
ylabel('Temperatur [°]')
hold on
subplot(3,1,2); % middle subplot
plot(time,Geschw,'red')
title('Geschwindigkeit')
xlabel('Time [s]')
ylabel('Geschwindigkeit')
hold on
subplot(3,1,3); % bottom subplot
plot(time,Höhe,'red')
title('Höhe')
xlabel('Time [s]')
ylabel('Höhe')
hold on

subplot(3,1,1);
p1 = handle(plot(time(1),Temp(1),'o','MarkerFaceColor','red'));
subplot(3,1,2);
p2 = handle(plot(time(1),Geschw(1),'o','MarkerFaceColor','red'));
subplot(3,1,3);
p3 = handle(plot(time(1),Höhe(1),'o','MarkerFaceColor','red'));

hold off
axis manual

M(399) = struct('cdata',[],'colormap',[]);
M(1)=getframe(gcf);

for k = 2:length(time)
subplot(3,1,1);
p1.XData = time(k);
p1.YData = TEMP(k);
drawnow
subplot(3,1,2);
p2.XData = time(k);
p2.YData = Geschw(k);
drawnow
subplot(3,1,3);
p3.XData = time(k);
p3.YData = Höhe(k);
drawnow

M(k)=getframe(gcf);
end
movie2avi(M,'Film.avi','compression','None');


Hatte den Teil vergessen in dem ich die plots als handle deklariere Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.04.2016, 12:59     Titel:
  Antworten mit Zitat      
Hallo m.l.90,

Zitat:
also die Sache ist wenn ich nach dem ich einmal die sachen geplottet hab und durch getframe in M gescheichert habe, wird mir zunächst ein 2D plot dargestellt mit weiser Fläche und unbeschrifteten Achsen, kurz darauf startet erneut die animation, jedoch verschoben nach oben rechts um die breite der Achsen...
wie könnte ich diesen fehler beheben?

Ich verstehe das Problem immer noch nicht. Die Fehlermeldung, die Du später zeigst, liegt wohl eher daran, dass Du im aktuellen Ordner keine Schreibrechte hast. Welches ist denn der aktuelle Ordner?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.