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

gleichnamige Funktionen/ globale Variablen

 

fragensteller

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2010, 11:21     Titel: gleichnamige Funktionen/ globale Variablen
  Antworten mit Zitat      
Hallo,

ich habe in verschiedenen Ordnern gleichnamige Funktionen und das möchte ich möglichst auch so belassen.
Diese Ordner sind alle in der Pfadvariablen eingetragen.
Meine Frage: Wie kann ich sicherstellen, dass eine Funktion im übergeordneten Ordner auf die Implementierung im jeweiligen Unterordner und nicht auf die gleichnamige Funktion in einem anderen Ordner zugreift?

Weiter würde mich interessieren, ob ich globale Variablen so deklarieren kann, dass sie nur in einem Ordner, aber dort eben für alle Funktionen sichtbar sind?


Grüße


Harald
Forum-Meister

Forum-Meister


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

nach Funktionen wird zunächst im momentanen Verzeichnis gesucht, danach im Suchpfad von oben nach unten. Eine unmittelbare Kontrolle darüber, welche Funktion verwendet wird, besteht zunächst nicht.
Um das zu bekommen, könnte man mit Packages arbeiten (siehe Doku) oder müsste in das gewünschte Verzeichnis wechseln.
Sofern man nicht mit Packages arbeitet, sollte das Arbeiten mit Funktionen gleichen Namens vermieden werden.

Globale Variablen können überall verwendet werden, wo sie als global deklariert werden. Das müsstest du aber selber direkt steuern. Davon abgesehen sollte das Arbeiten mit globalen Variablen nach Möglichkeit vermieden werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.07.2010, 17:11     Titel:
  Antworten mit Zitat      
Hallo Fragensteller,

gleichnamige Funktionen sind ausgesprochen schwer zu managen. Du kannst eine Hilffunktion schreiben, die im jeweiligen Ordner zunächst functionhandles zu den jeweiligen Funktionen erstellt und diese mit FEVAL aufrufen.
Eine "globale" Variable zu erstellen, die "im jeweiligen Ordner" existiert, ist keine valide Aufgabe. Eine Variable steht im Workspace und hat keine Verknüpfung zum aktuellen Ordner. Möglicherweise liesse sich Dein Problem lösen, wenn Du statt eines GLOBALs eine Funktion erstellst, die die Werte als PERSISTENT Variable speichert und auf Anfrage zurückgibt. Dies würde mit dem obigen Trick mit den functionhandles funktionieren.

Ich kann mir nicht vorstellen, dass dieser zusätzliche Verwaltungsaufwand wirklich einen Vorteil darstellt. Unterschiedliche Funktionen mit unterschiedlichen Namen aufzurufen ist irgendwie nutzerfreundlich, wartbar, reproduzierbar und nachvollziehbar. Packages sind eine brauchbar alternative, wenn man z.B. eine Toolbox eines 3rd-Party-Herstellers verwenden möchte.

Was spricht dagegen nur den jeweils benutzten Ordner in den Matlab PATH einzubinden?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2010, 10:08     Titel:
  Antworten mit Zitat      
Hallo,

wie Harald schon geschrieben hat, könntest Du mit Packages arbeiten.
Eine andere Möglichkeit wären private Funktionen.

Code:

docsearch "private functions"
 


Viele Grüße,

LittleX
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.