Verfasst am: 27.05.2011, 09:06
Titel: Funktion mit unbekannter Anzahl von Argumenten starten
Hallo Zusammen,
hoffe die Frage gibts nicht schon im Forum, hab jedenfalls nichts gefunden.
Ich will über einen String, der den Namen einer function enthält diese function ausführen. Jedoch soll die Anzahl an Ein-, und Ausgabeargumenten Variabel sein.
Über nargin und nargout kann ich ja auslesen wie viele Argumente die Funktion benötigt.
Wie kann ich aber mit dieser Information die Funktion variabel für alle möglichen Fälle starten?
Die Eingangswerte habe ich, es geht eigentlich nur um den Syntax wie man das abhängig von "nargin" und "nargout" schreibt.
Geht das überhaupt mit feval oder vielleicht mit einer anderen möglichkeit, vielleicht function handle oder so...
Oder ist meine einzige Chance die Ein-, und Ausgangsgrößen in jeweils ein cell-Array zusammenzufassen und nur diese cell-arrays ein und auszugeben?
(Fände ich für meine Anforderungen nicht besonders praktikabel)
Ich hoffe ich habe mein Problem ausreichend beschrieben, sonst bitte nochmal nachfragen.
das kann je nach Situation recht komplex werden. Die Frage, wie die Funktion aufgerufen werden kann, hängt alleine an der Deklaration der Funktion und wie sie arbeitet. Umgekehrt kann man natürlich die Deklaration so wählen, dass bestimmte Aufrufe möglich sind.
Ich würde in jedem Fall mit Function Handles arbeiten.
Werden die Argumente bei den variablen Aufrufen immer in einer bestimmten Reihenfolge übergeben? Dann siehe das Beispiel in
Um sich das ganze besser vorzustellen:
ich schreibe gerade eine aufwändigere Gui mit der Messwerte aufgenommen werden können und eine beliebige selbsterstellte function gewählt werden soll um Berechnungen vorzunehmen.
Alle Werte sind nach der Messung im Workspace vorhanden und der Benutzer muss in der richtigen Reihenfolge die Namen der Werte, die als Eingabeparameter dienen sollen, eingeben.
Hier mal ein Beispiel um es sich besser vorzustellen.
Code ist nicht getestet oder debugged, nur zur besseren vorstellen
varnames_in = [name_in1;name_in2;name_in3]; % Je nachdem wie groß inarg, wird vom % Benutzer in der Gui eingegeben
varnames_out = [name_out1;name_out2]; % Je nachdem wie groß outarg, wird vom % Benutzer in der Gui eingegeben
Hoffe es ist jetzt klarer, ist schwierig zu beschreiben^^[/b]
Einstellungen und Berechtigungen
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.