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

varargin und varargout für Anfänger

 

Mac-Burner
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 22.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2011, 09:41     Titel: varargin und varargout für Anfänger
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.07.2011, 10:03     Titel:
  Antworten mit Zitat      
Hallo,

als erstes würde ich mir die Hilfe anschauen
Code:

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Mac-Burner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 22.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2011, 10:05     Titel:
  Antworten mit Zitat      
Das hab ich schon gemacht. Verstehe aber nicht so ganz wie ich es dann anwende...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.07.2011, 10:15     Titel:
  Antworten mit Zitat      
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:
Code:
B = sort(A) --> 1 Input, 1 Output
B = sort(A, dim) --> 2 Inputs, 1 Output
[B, idx] = sort(A) --> 1 Input, 2 Outputs
[B, idx] = sort(A, dim) --> 2 Inputs, 2 Outputs


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
Private Nachricht senden Benutzer-Profile anzeigen
 
Mac-Burner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 22.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2011, 10:27     Titel:
  Antworten mit Zitat      
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]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.07.2011, 12:53     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Mac-Burner
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 22.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2011, 13:55     Titel:
  Antworten mit Zitat      
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
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 - 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.