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 in callback-Funktion abspeielen?

 

nimax
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 17.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2008, 19:11     Titel: movie in callback-Funktion abspeielen?
  Antworten mit Zitat      
Hallo Smile

eigentlich ist diese Frage ein Lösungsversuch zu meinem Problem unter
http://www.gomatlab.de/verschiedene.....4014,highlight,movie.html
aber ich dachte, ich bekomme so evtl mehr antworten (zumal auch der titel des vorigen posts etwas unglücklich ist Rolling Eyes )

Nun ja, nochmal kurz zum Problem:

Ich habe einen movie M mit 150 figures a neun subplots. Diesen movie möchte ich nun vorwärts, rückwärts, etc abspielen. Ich habe das ganze in einem movie gespeichert, da die Plots ziemlich groß sind und ne weile für den Aufbau brauchen.

ich habe mir also eine function mit einem slider programmiert:

Code:

function slider_gui(M)

fh = figure('Position',figuresize);

sh = uicontrol(fh,'Style','slider',...
               'Max',150,'Min',1,'Value',1,...
               'SliderStep',[1/149 10/149],...
               'Position',[10 400 20 300],...
               'Callback',@slider_callback);    %Slider

val = 1;
movie(fh,M,[1 val]);

% ----------------------------------------------------
% Get the value of the slider.
   function slider_callback(hObject,eventdata)
      val = get(hObject,'Value');
      h_plot=movie(fh,M,[1 val]);
   end

end;
 


damit malt er mir zwar die bildchen, aber ich bekomme immer die Fehlermeldung

??? One or more output arguments not assigned during call to "movie".
Error in ==> slider_gui>slider_callback at 47
h_plot=movie(fh,M,[1 val]);
??? Error while evaluating uicontrol Callback

Ich weiß, der Befehl "h_plot" ist für meine Zwecke nicht so geeignet, aber es war der einzige Weg, den ich finden konnte, dass überhaupt was gemalt wird. (der erste movie-Befehl vor der slider_callback-Definition ist fehlerfrei Smile )

Hat irgendjemand eine Idee?
Vielen Dank Smile
Private Nachricht senden Benutzer-Profile anzeigen


dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2008, 19:49     Titel:
  Antworten mit Zitat      
Hallo,

soweit ich weiss, liefert "movie" keinen Rückgabewert. Außerdem hast du hier (falls dies vollständig ist) in einer Funktionsdeklaration eine weitere Funktionsdeklaration. Das ist so leider nicht möglich (d.h. das letzte "end" gehört vor "function slider_callback").

Bei dem Problem im anderen Thread kann ich dir leider nicht helfen. Das sieht für mich eigentlich sauber aus. Mein erster Gedanke war vielleicht noch ein "drawnow" einzufügen, aber "waitforbuttonpress" macht dies eigentlich schon implizit.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
nimax
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 17.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2008, 09:31     Titel:
  Antworten mit Zitat      
Hallo Smile

Danke für die schnelle Antwort Smile Die Funktion slider_gui müßte eigentlich so stimmen (also mit der Funktionsdefinition innerhalb einer anderen Funktion) Ich habe nämlich das ganze Ding aus der Matlabhilfe kopiert, und nur das

h_plot = movie(fh,M,[1, val]);

eingefügt. (heißt sogar in der Hilfe slider_gui)

Leider verstehe ich nicht, was du mit Rückgabe meinst. (Ich beschäftige mich erst seit gestern mit GUI's und brauche schnell dieses blö*** "Zurückspulen".) kann ich in callback nur Befehle mit Rückgabewerten auffrufen?

was muß ich statt h_plot schreiben, damit der mir den val-ten Plot aus meinem movie zeichnet?

Hach, irgendwie hatte ich mir das ganze einfacher vorgestellt Razz klingt ja auch nicht so schwer: Wenn slider auf val-tem Wert steht, male val-tes Bild.

Bin immer noch offen für Ideen und neue Ansätze Smile

bis bald Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 19.11.2008, 11:37     Titel:
  Antworten mit Zitat      
Hallo nimax,

wenn man schreibt

Code:


dann ist p der Rückgabewert. Bei plot ist das beispielsweise ein handle auf die gezeichnete Kurve. Der Befehl movie hat aber nun keinen Rückgabewert, das heißt, man kann nicht schreiben h = movie...

Funktioniert denn das hier?

Code:
movie(fh,M,[1 val]);


Nach der Hilfe zu movie müsste das genau das von Dir gewünschte Einzelbild abspielen.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
nimax
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 17.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2008, 12:02     Titel:
  Antworten mit Zitat      
JUHU, es klappt Smile

Danke schön Bijick!! Idea

Meiner Meinung hatte ich das zwar schon ausprobiert, aber wahrscheinlich hatte ich dann irgendwo anders einen Fehler, so dass das nicht klappte, und ich es deshalb nicht nochmal versucht habe!

Hier nochmal der entgültige (endlich funktionierende Smile ) Code:

Code:

function slider_gui(M)

fh = figure('Position',figuresize);
sh = uicontrol(fh,'Style','slider',...
               'Max',150,'Min',1,'Value',1,...
               'SliderStep',[1/149 10/149],...
               'Position',[10 400 20 300],...
               'Callback',@slider_callback);    %Slider

val = 1;
movie(fh,M,[1 val]);
% ----------------------------------------------------
% Get the value of the slider.
   function slider_callback(hObject,eventdata)
      val = get(hObject,'Value');
      movie(fh,M,[1 val]);
   end
% ----------------------------------------------------
end
 


Bis denne Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2008, 13:46     Titel:
  Antworten mit Zitat      
dib0r hat Folgendes geschrieben:
Hallo,
Außerdem hast du hier (falls dies vollständig ist) in einer Funktionsdeklaration eine weitere Funktionsdeklaration. Das ist so leider nicht möglich (d.h. das letzte "end" gehört vor "function slider_callback").


Tja, wieder was dazugelernt.

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