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

Video

 

82kolu
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2012, 21:39     Titel: Video
  Antworten mit Zitat      
Hey hey,
ich schlag mich jetzt schon gute 2 stunden damit rum ein video in matlab zu machen...
Jetzt dacht ich mir ich poste es mal... weil des eig sehr einfach sein sollte...

ich hab meinen code mal sehr stark vereinfacht und möchte davon jetzt ein video abspeichern (am besten avi)

Code:
Y = 2;
for i=1:100
    plot(i, Y , 'o', 'MarkerSize', 10, 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'r');
   A(:,i)=getframe;
end


PS: das die Achsen im video angezeigt werden ist nicht wichtig.

Vielen Dank schonmal!
Grüße 82kolu
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 26.04.2012, 08:49     Titel:
  Antworten mit Zitat      
So was fand ich in der Doku:

Zitat:

writerObj = VideoWriter('peaks.avi');
open(writerObj);


Generate initial data and set axes and figure properties.
Z = peaks; surf(Z);
axis tight
set(gca,'nextplot','replacechildren');
set(gcf,'Renderer','zbuffer');


Setting the Renderer property to zbuffer or Painters works around limitations of getframe with the OpenGL renderer on some Windows systems.

Create a set of frames and write each frame to the file.
for k = 1:20
surf(sin(2*pi*k/20)*Z,Z)
frame = getframe;
writeVideo(writerObj,frame);
end

close(writerObj);


Passt das?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
82kolu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2012, 11:44     Titel:
  Antworten mit Zitat      
Andreas Goser hat Folgendes geschrieben:
So was fand ich in der Doku:

Zitat:

writerObj = VideoWriter('peaks.avi');
open(writerObj);


Generate initial data and set axes and figure properties.
Z = peaks; surf(Z);
axis tight
set(gca,'nextplot','replacechildren');
set(gcf,'Renderer','zbuffer');


Setting the Renderer property to zbuffer or Painters works around limitations of getframe with the OpenGL renderer on some Windows systems.

Create a set of frames and write each frame to the file.
for k = 1:20
surf(sin(2*pi*k/20)*Z,Z)
frame = getframe;
writeVideo(writerObj,frame);
end

close(writerObj);


Passt das?

Andreas


Hey... damit habe ich es auch schon versucht... ich willlnicht sagen das es falsch ist aber ich bekomm es einfahc nicht gebacken.... also wenn du vielleicht die zeit hättest es mit meinem codbeispiel, Beispielhaft zu verdeuttlichen... des wär super!

Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



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

mit deinem Beispiel Funktioniert es schon, bloß du siehst die Änderung nicht weil der Punkt bewegt sich nicht sondern Axes, also muss du vorher die Axes entsprechend skalieren. PLOT hat eine Eigenschaft Axes zurückzusetzen.
Das kann man zwar über HOLD stoppen, aber dann bleiben die ursprünglich Punkte stehen wie hier:
Code:

hf        = figure('Renderer','zbuffer');
Y = 2;
axis([0 101 0 3])
hold on
for i=1:45
    plot(i, Y , 'o', 'MarkerSize', 10, 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'r');
   A(:,i)=getframe;
end

movie(A,10)
 



Besser ist nicht jedes mal neue zu plotten sondern nur die Punktposition zu verändern:
Code:

hf        = figure('Renderer','zbuffer');
Y = 2;
hPlot  = plot(1, Y , 'o', 'MarkerSize', 10, 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'r');
axis([0 101 0 3])
for i=1:45
    set(hPlot, 'XData', i)
   A(:,i)=getframe;
end

movie(A,10)
 


MOVIE kann nur wenige Frames abspielen, bei mir bricht schon nach 45 Frames ab. Kann es nicht sagen woran es liegt.
Deswegen wenn du bis 100 Punkt bewegen willst muss die Schrittweite erweitern

Code:

hf        = figure('Renderer','zbuffer');
Y = 2;
hPlot  = plot(1, Y , 'o', 'MarkerSize', 10, 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'r');
axis([0 101 0 3])
k = 1;
A = struct('cdata',[],'colormap',[]);
for x=1:3:100
   set(hPlot, 'XData', x)
   A(:,k)=getframe;
   k=k+1;
end

movie(A,10)
 
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.