|
|
Input-Argmumente als String übergeben |
|
psigh |

Forum-Century
|
 |
Beiträge: 118
|
 |
|
 |
Anmeldedatum: 16.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 12:09
Titel: Input-Argmumente als String übergeben
|
 |
Hallo,
ich habe eine Funktion, die des öfteren in meinem Programm aufgerufen wird. Die Input-Argumente würde ich gerne nicht überall neu angeben müssen sondern nur einmal am Anfang als String angeben.
Statt diesem:
würde ich gern so etwas machen:
Dann sagt er aber immer: Too many Input Arguments.
Für einen Tip wäre ich sehr dankbar.
Dominik
|
|
|
|
|
dmjr |

Forum-Century
|
 |
Beiträge: 199
|
 |
|
 |
Anmeldedatum: 02.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 13:03
Titel:
|
 |
In der Klammer direkt nach dem @ stehen die verbleibenden Parameter, da du alle Konstant setzt gibt es keine.
|
|
|
psigh |
Themenstarter

Forum-Century
|
 |
Beiträge: 118
|
 |
|
 |
Anmeldedatum: 16.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 14:43
Titel:
|
 |
Das funktioniert bei mir nicht, was auch daher kommen kann, weil ich mich nicht vernünftig ausgedrückt habe. generell meine ich:
Eine Funktion braucht bsp. die Eingabeparameter A und B. Diese werden vom Benutzer angegeben, im Programmkopf, sagen wir mal. An der Stelle, o besagt Funktion aufgerufen wird, irgendwo im Programm, möchte ich aber nicht [Ergebniss]=fun(A,B) schreiben.
Sondern der Benutzer soll im Programmkopf die Parameter einmal als String angeben: var=('A','B'). Dann kann ich im Programm einfach [Ergebniss]=fun(var) schreiben. Das möchte ich deswegen machen, weil der Benutzer seine Inputvariablen ja auch C und D nennen könnte.
Vielen Dank
Dominik
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 14:46
Titel:
|
 |
Hallo da musst erstmals den Kopf als String erstellen und dann über STR2FUNC nutzen um Funktionshandle zu erzeugen.
|
|
|
psigh |
Themenstarter

Forum-Century
|
 |
Beiträge: 118
|
 |
|
 |
Anmeldedatum: 16.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 15:31
Titel:
|
 |
Vielen Dank für die Antwort. Was Handles angeht, bin ich noch totaler Neuling. Es sieht jetzt alles ziemlich gut aus. Ich weiß nur nicht, wie ich die Outputs jetzt wieder aus der Funktion heraus bekomme.
Mit [Ergbnis]=modul(vars) geht es auf jeden Fall nicht. Da sagt er : Too many Output Arguments.
Dominik
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 16:35
Titel:
|
 |
Hallo
Dazu muss die Funktion aber definiert sein. Also
z.B wenn ich z.B hier eine ADDIERE Funktionskopf schreibe
dann muss diese Funktion auch als solche in File, wo das Handle erzeugt wird oder als getrennte Datei definiert sein.
z.B speichere diese Funktion als File addiere.m
dann kann man auch aufrufen
|
|
|
psigh |
Themenstarter

Forum-Century
|
 |
Beiträge: 118
|
 |
|
 |
Anmeldedatum: 16.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 16:47
Titel:
|
 |
Das wundert mich ja. Vielleicht habe ich da ein Brett vor dem Kopf. Ich schreibe mal auf, was ich habe.
Die "addiere Funktion" lautet in meinem Fall:
Für diese Funktion wollte ich ein Handle und ich möchte die Inputs als String einfügen. Meine erste Version sah so aus:
Das kann so aufgerufen werden:
Klappt also, und A,H,omega werden ausgegeben. Das bringt mir ja aber nichts, weil ich ja die Inputs als String haben wollte.
Bei Deiner Version schreibe ich:
Und das klappt eben nicht, was ich nicht richtig verstehe. Denn wenn ich debugge und mit dem Cursor auf das Wort "modul" gehe erscheint:
@(ar_lag,ma_lag,phi)arma_univ_ssf(ar_lag,ma_lag,phi)
Genau wie bei meiner ersten Version. Also genau, was ich brauche. Dann müsste doch auch
klappen.
Dominik
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 18:56
Titel:
|
 |
Hallo
da haben wir aneinander vorbei geredet. Bei diesem Konstrukt musst schon die Werte übergeben, keine Namen der Varaiblen:
so:
Also suchst du wohl eine Art EVAL -Konstrukts
Funktion als String definieren dann mit EVAL auswerten.
|
|
|
psigh |
Themenstarter

Forum-Century
|
 |
Beiträge: 118
|
 |
|
 |
Anmeldedatum: 16.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 21:04
Titel:
|
 |
Super, klappt alles. Vielen Dank für die ganze Mühe!
Dominik
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|