Verfasst am: 12.08.2011, 20:09
Titel: class method als callback aufrufen
Hallo,
ich habe eine klasse definiert und dieser methoden hinzugefügt. Jetzt würde ich gerne auf die Klassenmethode 'unit_conversion_factors' zugreifen. Leider erzeugt Matlab lauter Fehlermeldung, wie mach ich es richtig?
wie immer wäre es hilfreich, die Fehlermeldungen zu sehen.
Ein Problem wird sicher sein, dass die Callbacks immer mit Argumenten aufgerufen werden, und dass diese Argumente mit den erwarteten deiner Klassenmethode (sofern diese überhaupt Argumente annimmt) nicht zusammenpasst.
Falls dir das nicht weiterhilft: wie ist die Deklarationszeile der Methode?
Woher sollen eventuelle zusätzliche Eingabeargumente kommen?
also die methode sieht etwa so aus, also die methode soll keine speziellen argumente übernehmen, nur ausgeführt werden, wenn ich im Contextmenu den entsprechenden Callback abfeuer...
Code:
classdef RawMovieClass < handle
methods (Access = public) % constructor function obj = RawMovieClass(input) % code end% function
function unit_conversion_factors(obj) % code end% function end% methods end% classdef
Code:
??? Error using ==>
unit_conversion_factors
Too many output arguments.
hatte auch schon mit Varianten von varargin und varargout probiert, aber sitz voll auf dem Schlauch
mich erstaunt, dass die Meldung auf die Outputs bezogen ist. Ich hätte vermutet, dass sie auf die Inputs bezogen ist. Vielleicht hilft auch der Debugger?
Zwei Vorschläge:
Ob die Methode als Methode auf das Objekt angewendet wird oder als Funktion mit Objekt als Input aufgerufen wird, sollte keinen Unterschied machen.
Wenn das nicht funktioniert, würde ich den Callback mal in einer separate (Sub oder nested) Function schreiben und dort mit dem Debugger reingehen und NARGIN und NARGOUT überprüfen.
hat funktioniert, hab vielen Dank! Muss das aber noch mal für mich selbst verstehen, was da schiefläuft, bin grad vom rumtesten bisschen Matsch in der Birne...
der GUI-Mechanismus ruft den Callback mit (ich denke zwei) Input-Argumenten auf. Deine Methode nimmt aber keine (zusätzlichen) Input-Argumente entgegen.
Über das anonymous function handle kannst du das Funktions-Interface anpassen. Mein Vorschlag nimmt also varargin (= alle Input-Argumente) entgegen, damit der Aufruf mit Argumenten möglich ist, und verwendet sie einfach nicht weiter.
dank euch für die Erklärungen, bin grad erst dabei mich in OOP einzuarbeiten, und mit anonymous function handles und Weitergabe von Variablen steh ich sowieso permanent auf Kriegsfuss
Options and Permissions
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
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.