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

Animiertes Gif mit Matlab

 

nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.320
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 08.08.2008, 13:51     Titel: Animiertes Gif mit Matlab
  Antworten mit Zitat      
Hier ein kurzes Beispiel, wie ein animiertes Gif mit Matlab erstellt werden könnte:
Alle benutzten Dateien sind im Anhang.
Die Funktion movie2gif stammt von hier: http://user.it.uu.se/cgi-bin/cgiwra.....ountUtils.cgi?movie2gif.m

Code:
clear all;
clc;
fid=fopen('test.txt');
C=textscan(fid,'%f %f','HeaderLines',1);
fclose(fid);
C=[C{:}];
f=figure;
xlim( [ min(C(:,1)) max(C(:,1)) ]);
ylim( [ min(C(:,2)) max(C(:,2)) ]);
grid on;
title('Schlange');
hold on;

for k=1:length(C)
    h(k)=line(C(k,1),C(k,2),'Marker','o','MarkerEdgeColor','r','Visible','off');
end
m=1;
for k=2:1:length(C)-1
    set(h,'Visible','off');
    set(h(k-1),'Visible','on');
    set(h(k),'Visible','on');
    set(h(k+1),'Visible','on');
    F(m) = getframe(gcf);
    m=m+1;
end

movie2gif(F,'test.gif','delaytime',0.2,'loopcount',inf);

gcf sorgt dafür, dass auch die Beschriftung mitkommt.

test.gif
 Beschreibung:

Download
 Dateiname:  test.gif
 Dateigröße:  21.28 KB
 Heruntergeladen:  4288 mal
test.txt
 Beschreibung:

Download
 Dateiname:  test.txt
 Dateigröße:  192 Bytes
 Heruntergeladen:  2246 mal
movie2gif.m
 Beschreibung:

Download
 Dateiname:  movie2gif.m
 Dateigröße:  2.21 KB
 Heruntergeladen:  2733 mal

_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2009, 15:07     Titel:
  Antworten mit Zitat      
scheinbar funktioniert der gegebene Link leider nicht mehr... und auch die Anweisung C=[C{:}] mag Matlab bei mir nicht

verstehe auch grad ned warum...

würde mich aber schon interessieren die Thematik

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2009, 15:13     Titel:
  Antworten mit Zitat      
Gibts denn eine Fehlermeldung?
Code:
sollte funktionieren, wenn C eine (nichtverschachtelte) Cell ist, die nur Zahlen enthält.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2009, 15:20     Titel:
  Antworten mit Zitat      
Ein neuer Link zu movie2gif.m und anderem:
http://www.csc.kth.se/~steng/freeware.html
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2009, 15:33     Titel:
  Antworten mit Zitat      
Fehlermeldung:

??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

mit den { } anweisungen bin ich scheinbar ein wenig eingerostet... ich kann ned so recht verstehen was da nicht klappt
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2009, 16:16     Titel:
  Antworten mit Zitat      
Vermutlich sind nicht alle Zeilen oder alle Spalten von dem, was da in eine Matrix umgewandelt werden soll, gleich lang.

Das Beispiel von nschlange funktioniert bei mir. Im übrigen war die Funktion movie2gif ja oben auch noch angehängt.

Vielleicht postest du mal Code, dass man sieht welcher Befehl mit welchen Daten den Fehler verursacht.
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2009, 16:43     Titel:
  Antworten mit Zitat      
ok

war mein Fehler...
das txt ist aus welchem Grund auch immer statt in Spalten in Zeilen angelegt worden beim ersten Versuch...

nun klappts auch bei mir

danke für die schnelle Hilfe!
manchmal ist es schon eine Hilfe wenn man weiß es geht bei einem anderen Anwender problemlos ;-)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2009, 14:51     Titel: HILFE ANIMATION
  Antworten mit Zitat      
sagt mal kann man auch ein animiertes GIF in ne GUI laden...
ja das geht:
http://www.gomatlab.de/viewtopic,p,20754.html#20754
nur wie kann ich das GIF ständig laufen lassen und nebenbei den restlichen programm-code ausführen????
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 18.04.2009, 17:47     Titel:
  Antworten mit Zitat      
Hallo,

steuere Animation über timer-objekt, dann läuft die Animation in Hintergrund
schau dazu zuerst die Hilfe an:
Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2009, 16:01     Titel:
  Antworten mit Zitat      
danke für die antwort mit dem timer, sitze gerade dran, nur irgendwie führt er trotzdem erstmal nur den timer aus und nicht mein restliches skript. is bis jetzt wie folgt aufgebaut:

Code:

handles.t = timer('Name','Timer_Movie','TimerFcn',@timer_movie_fcn,'Period', 0.01,'ExecutionMode','fixedRate','TasksToExecute',5);
 


dann wird über einem button der timer gestartet
Code:

start(handles.t)
 


und die timer_fcn sieht so aus
Code:

function timer_movie_fcn(obj, event, string_arg)
    global mov smiley
    movie(smiley,mov)
 


in mov ist die animation und smiley ist ein axes handle.
noch ne andere frage muss ich z.B. mov etc global wählen oder kann ich das nicht mit dem funktionsaufruf übergeben. in
Code:
obj, event

werden soweit ich das gesehen habe die Timereigenschaften übergeben
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.04.2009, 10:06     Titel:
  Antworten mit Zitat      
Zitat:

danke für die antwort mit dem timer, sitze gerade dran, nur irgendwie führt er trotzdem erstmal nur den timer aus und nicht mein restliches skript. is bis jetzt wie folgt aufgebaut:

weiss warum nur der timer ausgeführt wird. während der movie funktion können keine anderen befehle eingegeben werden und wenn man den timer auf 0.001 stellt wird immer wieder die moviefunktion aufgerufen Sad

habe mal die Periode auf 1 sekunde gestellt und schon konnte ich nebenbei befehle ausführen.

was soll ich also tun damit mein GIF ständig abläuft (zur Zeit habe ich es so geregelt das die moviefunktion läuft dann ein statisches bild und nach einer sekunde wieder das movie)
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.04.2009, 10:38     Titel:
  Antworten mit Zitat      
Hallo,
sorry habe keine Zeit gefunden dir zu antworten.
Du sollst keine movie-Funktion von Matlab nutzen, wie du schon selbst festgestellt hast, die macht den Echzeit-Effekt weg.

Schreibe deine eigene Funktion, die jedes einzelnes Frame über Loop darstellt.
Private Nachricht senden Benutzer-Profile anzeigen
 
gast11

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2009, 16:55     Titel:
  Antworten mit Zitat      
hallo,
kann man die movie2gif auch so abändern, damit man aus 3dim graphen animierte bilder erstellen kann?
vielen dank schon mal für die antwort Smile
grüße
 
Balzer82
Forum-Anfänger

Forum-Anfänger



Beiträge: 26
Anmeldedatum: 22.02.11
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 09.07.2012, 21:06     Titel:
  Antworten mit Zitat      
Eine Variante ohne die Sonderfunktion ist folgende:

Code:

mygif = 'mysuperawesome.gif';
f = getframe(gcf);
[im,map]=rgb2ind(f.cdata,256,'nodither');
imwrite(im,map,mygif,'Delaytime',.1,'Loopcount',inf)
for i=1:1:10
   % change something with your figure here, because it is animated!

    f = getframe(gcf);
    im = rgb2ind(f.cdata,map,'nodither');
    imwrite(im,map,mygif,'writemode','append')
end
 


Sceneview-Kostenfunktion-3D.gif
 Beschreibung:
3D Rotation eines Meshgrid

Download
 Dateiname:  Sceneview-Kostenfunktion-3D.gif
 Dateigröße:  2.3 MB
 Heruntergeladen:  3159 mal

_________________

"Bremsen ist die sinnlose Umwandlung von Exergie in Anergie - daran kann man sich höchstens noch die Finger verbrennen" - Prof. J. Morgenstern
Private Nachricht senden Benutzer-Profile anzeigen
 
Balzer82
Forum-Anfänger

Forum-Anfänger



Beiträge: 26
Anmeldedatum: 22.02.11
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 09.04.2014, 17:59     Titel:
  Antworten mit Zitat      
Irgendwie klappt es in neueren Versionen so besser:


Code:
%% Create GIF
mygif = 'myGif.gif';
f = getframe(gcf);
[im,map]=rgb2ind(f.cdata,256,'nodither');
imwrite(im,map,mygif,'Delaytime',0.05,'Loopcount',inf)


for i=1:10
   
    %pause(0.01)
    % hier sollte etwas mit dem Figure passieren

    drawnow
   
    f = getframe(gcf);
    [im,map]=rgb2ind(f.cdata,256,'nodither');
    imwrite(im,map,mygif,'writemode','append','Delaytime',0.1)
end

_________________

"Bremsen ist die sinnlose Umwandlung von Exergie in Anergie - daran kann man sich höchstens noch die Finger verbrennen" - Prof. J. Morgenstern
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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