|
|
varargin und varargout für Anfänger |
|
Mac-Burner |

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 22.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 09:41
Titel: varargin und varargout für Anfänger
|
 |
Hallo zusammen.
Ich versuche gerade mir die allgemeine Programmierung von varargin und co. beizubringen.
Also ganz schlicht. Ich hab eine Hauptfunktion und möchte in den weiteren Funktionen die Variablen übergeben. Denke ich hab das schon teilweise verstanden, aber irgendwie fehlt noch der "Aha-Effekt".
Habe versucht es aus anderen Skripten abzuleiten, aber da werden die varargins und varargouts auch für viele zusätzliche Befehle genutzt, daher ist es schwer das wesentliche raus zu filtern...
Evtl. genügt auch nur eine gute Anleitung iwo im Netz oder so.
Danke im Voraus
Alex
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 10:03
Titel:
|
 |
Hallo,
als erstes würde ich mir die Hilfe anschauen
In dem Zusammenhang sind oft auch nargin, nargout nützlich.
Bottom line:
varargin sind optionale/variable Eingabeargumente.
varargout sind optionale/variable Ausgabeargumente.
nargin ist die Anzahl der bei einem speziellen Funktionsaufruf übergebenen Eingabeargumente, also length(varargin).
nargout ist die Anzahl der bei einem speziellen Funktionsaufruf zurückgeforderten Ausgabeargumente.
Grüße,
Harald
|
|
|
Mac-Burner |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 22.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 10:05
Titel:
|
 |
Das hab ich schon gemacht. Verstehe aber nicht so ganz wie ich es dann anwende...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 10:15
Titel:
|
 |
Hallo,
varargin und varargout erlauben dir, bei verschiedenen Funktionsaufrufen eine unterschiedliche Anzahl an Argumenten hineinzuschicken und eine unterschiedliche Anzahl an Argumenten zurückzuverlangen - und das ganze dann noch sinnvoll abzufragen.
Viele MATLAB-Befehle arbeiten nach diesem Konzept. So kann z.B. sort u.a. so aufgerufen werden:
varargin und varargout erlauben dir (teils im Zusammenspiel mit nargin und nargout), so ein Verhalten auch für eigene Funktionen umzusetzen.
Falls das nicht weiterhilft, wäre eine Konkretisierung der Fragestellung hilfreich.
Grüße,
Harald
|
|
|
Mac-Burner |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 22.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 10:27
Titel:
|
 |
Nun, ich habe ein Skript, in dem verschiedene Funktionen aufgerufen werden sollen. Das erste Problem ist schonmal das ich dann mit einer Funktion beginnen muss. Ich habe das bisher über structe gelöst, würde aber gerne alle Variablen von Funktion zu Funktion übergeben ohne diese genau zu bestimmen.
Ich möchte wiederkehrende Aufgaben in functions speichern und in verschiedenen skripten darauf zugreifen können.
Hab das bisher so verstanden, das ich einer Funktion sagen kann. Übergib alles und nimm alles was an Variablen verfügbar ist.
[/code]
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 12:53
Titel:
|
 |
Hallo,
Zitat: |
Das erste Problem ist schonmal das ich dann mit einer Funktion beginnen muss. |
Nur wenn die anderen Funktionen in der selben Datei sein sollen (als subfunctions).
Zitat: |
würde aber gerne alle Variablen von Funktion zu Funktion übergeben ohne diese genau zu bestimmen. |
Es wird dir nicht erspart bleiben, das in irgendeiner Form zu formalisieren. Schließlich müssen die Funktionen ja zumindest wissen, welche Variablen in welcher Reihenfolge kommen. Structures sind da an sich eine gute Lösung.
Zitat: |
Übergib alles und nimm alles was an Variablen verfügbar ist. |
"Alles" ist schwierig, und es ist vor allem auch fragwürdig, ob das zweckmäßig ist. Ein- und dieselbe Variable (t zum Beispiel) kann ja in verschiedenen Funktionen unterschiedliche Bedeutungen haben.
Grüße,
Harald
|
|
|
Mac-Burner |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 22.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 13:55
Titel:
|
 |
Ich glaub ich hab den Sinn langsam verstanden. Hab auch schon ein bisschen was anwenden können. Es ist keine universelle Funktion um Variablen zu übergeben, das hab ich soweit kapiert. Es geht mehr um Funktionen zu füttern, die verschiedene Anzahlen von Variablen verarbeiten. Hab das bei mir grade auf eine Funktion um API Adressen zu vergeben angewendet.
Vielen Dank für deine Hilfe. Ich denke ich kann bei den nächsten Schwierigkeiten dann mit einem konkreten Fallbeispiel dienen.
Grüße
|
|
|
|
|
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.
|
|