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

Movie aus plot erstellen

 

DonMcDonut
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2012, 12:54     Titel: Movie aus plot erstellen
  Antworten mit Zitat      
Hallo zusammen,

folgendes Problem beschäftigt mich:

Ich habe zwei if-Schleifen.

Code:

for i=1:5
U0(i,1)=(i-1)*15;
end

z0=zeros(size(U0));

for t=0:10

for u=1:5
U1(u,1)=U0(u,1)+2*t;
end

plot(U1,z0,'-o'); grid minor
drawnow
pause(0.2)

% F(u)=getframe;

end

% numtimes=2;
% fps=10;
% movie(F,numtimes,fps)
 


Nun möchte ich gerne aus diesem Plot ein Movie erstellen, das ich z.B. in einer Präsentation zeigen kann.

Meine Versuche habe ich im obigen Code auskommentiert.

Könnt ihr mir da weiterhelfen?

Gruß
DMD
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 01.06.2012, 13:33     Titel:
  Antworten mit Zitat      
Hallo

schaue dir MOVIE2AVI an, und dort in der Doku das Beispiel dazu
Ich glaube das ist was du suchst
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2012, 13:56     Titel:
  Antworten mit Zitat      
Hallo Denny,

okay - dann schau ich mir das man an...

Vielen Dank!

Gruß
DMD
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2012, 11:45     Titel:
  Antworten mit Zitat      
Hallo Denny,

jetzt melde ich mich erst wieder.

Ich habe versucht, das mithilfe von movie2avi zu machen. Es funktioniert aber nicht ganz. Es wird eine Datei erstellt, die ich nicht abspielen kann und es kommen drei Fehlermeldungen.

Bei der Lösung der Fehler bin ich nicht weiter gekommen.

Code:

for i=1:5
U0(i,1)=(i-1)*15;
end

z0=zeros(size(U0));

for t=0:10

for u=1:5
U1(u,1)=U0(u,1)+2*t;
end

plot(U1,z0,'-o'); grid minor
drawnow
pause(0.2)

F(u)getframe;

end

 numtimes=2;
 fps=10;
 movie(F,numtimes,fps) ;
movie2avi(F,'out.avi','compression','none');
 


Muss ich getframe nicht in Abhängigkeit von t machen? Ich will für jedes t den Vektor U1 plotten und dann als avi exportieren.

Ich steige da noch nicht durch und die zahlreichen Dokumentationen lösen das Problem nicht....

Gruß
DonMcDonut
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 06.06.2012, 12:53     Titel:
  Antworten mit Zitat      
Zitat:
Muss ich getframe nicht in Abhängigkeit von t machen? Ich will für jedes t den Vektor U1 plotten und dann als avi exportieren.

Ja natürlich, von der Schleife wo es steht:

Code:


U0             = ((1:5)-1)*15;
z0             = zeros(size(U0));
fps            = 1;
nFrames   = 10
mov(1:nFrames) =           ...
   struct(                 ...
   'cdata'     ,        [] ,...
   'colormap'  ,        [] );

for t = 1:nFrames
   
   U1 = U0 + 2*t;
   plot(U1,z0,'-o');
   grid minor
   drawnow
   mov(t) = getframe(gca);
end

numtimes       = 2;
figure;
movie(mov,numtimes,fps);
movie2avi(mov,'out.avi','compression','none');
 


Zuletzt bearbeitet von denny am 06.06.2012, 14:21, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2012, 14:09     Titel:
  Antworten mit Zitat      
Hallo denny,

vielen Dank für die Antwort.

Ich habe das übernommen und vorher noch eine allgemeine Frage zu 'nFrames' und dem anschließenden Teil in der Klammer.

Wofür steht denn nFrames? Bzw. das habe ich vorher noch nicht definiert.
Die einzelnen Punkte sind doch nur beliebige Prameter, die ich aber nicht unbedingt benötige, oder?

Du siehst, ich hab wirklich den Durchblick Very Happy Very Happy und das möchte ich ändern.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 06.06.2012, 14:24     Titel:
  Antworten mit Zitat      
Stimmt mein Fehler, hatte im Speicher die Variable gehabt. Habe oben den Code ausgebessert.

nFrames -- ist einfach gesamt Anzahl Frames, also Bilder in der Movie

nFrames = fps*time
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2012, 14:51     Titel:
  Antworten mit Zitat      
Hey,

jetzt kommen erst zwei Warnmeldungen:
Code:

Warning: Integer operands are required for colon operator when used as index
 

und dann die Fehlermeldung:
Code:

was wird denn durch gca gesteuert. In der Hilfe steht was von "current axes handle"

Vielleicht liegt das auch an meiner Programmierung. Das läuft bisher. Ich versuche mal ein ausführlicheres Beispiel hier zu schreiben.

Code:

t0=0;
dt=0.1;
tend=5;
n=10;

U0=zeros(n,1);
z=zeros(size(U0));

fps=1;
mov(0:dt:tend)=struct('cdata','colormap');

for t=t0:dt:tend   % Beginn 1. Schleife
for i=1:n             % Beginn 2. Schleife
U1(i,1)=U0(i,1)+2*t    % Hier kommen mehrere Rechnungen - Ergebnis ist danach U1

end % 2. Schleife

plot(U0,z0,'-x',U1,z0,'-o');
grid minor
ylim([-0.5,0.5]);
drawnow
%xlabel...
%ylabel...

mov(t)=getframe(gca);

end % 1. Schleife

numtimes=1;
figure;
movie(mov,numtimes,fps);

movie2avi(mov,'out.avi','compression','none');
 


Das ist so das, wie das bei mir bisher programmiert ist und wie es auch funktioniert (ohne Movie Very Happy)
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 06.06.2012, 15:07     Titel:
  Antworten mit Zitat      
Das liegt natürlich daran ,
dass man las Indizien keine 0 und Kommazahlen verwenden darf:
t anders behandeln, zuerst als Array anlegen, dann über die Elemente in der Schleife laufen,
t muss in der Schleife mit Index aufrufen:

Code:
t0   = 0;
dt   = 0.1;
tend = 5;
t    = 0:dt:tend;
n    = 10;

U0   = zeros(n,1);
z    = zeros(size(U0));

fps  = 10;
mov(1:length(t))=struct('cdata','colormap');

for k  = 1:length(t)   % Beginn 1. Schleife
   U1  = zeros(1,n);
   for i = 1:n             % Beginn 2. Schleife
      U1(i,1) = U0(i,1)+2*t(k);    % Hier kommen mehrere Rechnungen - Ergebnis ist danach U1
     
   end % 2. Schleife
   
   plot(U0,z0,'-x',U1,z0,'-o');
   grid minor
   ylim([-0.5,0.5]);
   drawnow
   %xlabel...
   %ylabel...
   
   mov(k) = getframe(gca);
   
end % 1. Schleife

numtimes =1;
figure;
movie(mov,numtimes,fps);
movie2avi(mov,'out.avi','compression','none');
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2012, 16:10     Titel:
  Antworten mit Zitat      
Hey denny,

mmh, sieht besser aus Smile.
Jetzt habe ich einige Probleme, da ich mit mehreren if-Fragen auf das aktuelle t zugreife. Ich muss das dann noch umstrukturieren... melde mich dann später, wenn das alles konsistent ist.

Gruß
DMD
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2012, 11:30     Titel:
  Antworten mit Zitat      
Mahlzeit zusammen,

so... es kommt immer anders, als "wie" man denkt Wink.

Bevor ich den Plot in einer Movie-Datei exportieren kann, habe ich noch eine andere Frage, deren Lösung ich auch in anderen Threads nicht wirklich gefunden habe.

Kann ich mir auch einen Plot mehrfach in einer Schleife ausgeben lassen? Um z.B. Änderungen einer Größe innerhalb der Schleife darzustellen?

Also irgendwas in der Art:
Code:

for ...
   U=...
   plot U
   U=U*2
   plot U
end
 

Ich weiß, das ist kein Minimalbeispiel, aber ich will ja nur wissen, ob man das irgendwie in die bestehende Programmierung in diesem Thread eingliedern kann.
Ich möchte am liebsten nur mit einer Größe arbeiten.
Gruß
DMD
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.