|
|
gleichnamige Funktionen/ globale Variablen |
|
fragensteller |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.07.2010, 11:21
Titel: gleichnamige Funktionen/ globale Variablen
|
 |
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
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.07.2010, 12:19
Titel:
|
 |
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
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 17.07.2010, 17:11
Titel:
|
 |
|
 |
|
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
|
|
|
LittleX |

Forum-Guru
|
 |
Beiträge: 494
|
 |
|
 |
Anmeldedatum: 14.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.07.2010, 10:08
Titel:
|
 |
Hallo,
wie Harald schon geschrieben hat, könntest Du mit Packages arbeiten.
Eine andere Möglichkeit wären private Funktionen.
Viele Grüße,
LittleX
|
|
|
|
|
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.
|
|