Wie emulate ich das Verhalten von Include in MATLAB?

7

In MATLAB kann ich mehrere Funktionen in einer Datei definieren, wobei nur die erste definierte Funktion außerhalb dieser Datei sichtbar ist. Alternativ kann ich jede Funktion in eine eigene Datei einfügen und sie alle global über den Pfad sichtbar machen. Ich schreibe eine menügesteuerte Anwendung, bei der jeder Menüeintrag eine andere Funktion ausführt. Derzeit befinden sich alle in einer großen Datei, die immer schwieriger zu navigieren ist. Ich möchte Gruppen verwandter Funktionen in separate Dateien einfügen.

Ich denke, ich kann so etwas machen, indem ich alle untergeordneten Funktionen in ein separates Verzeichnis lege und dann das Verzeichnis zum Pfad in meiner Elternfunktion hinzufüge, aber das fühlt sich ein wenig chaotisch und unelegant an.

Kann jemand einen besseren Vorschlag machen?

Hinweis: Ich bin mit MATLAB 2006 am vertrautesten, aber ich bin gerade dabei, auf MATLAB 2009 zu aktualisieren.

    
Ian Hopkinson 14.08.2009, 12:34
quelle

3 Antworten

14

Ein Vorschlag, der es vermeiden würde, den MATLAB-Pfad zu ändern, ist die Verwendung von a privates Funktionsverzeichnis . Zum Beispiel:

Nehmen wir an, Sie haben eine Funktion namens test.m im Verzeichnis \MATLAB\temp\ (die sich bereits im MATLAB-Pfad befindet). Wenn lokale Funktionen in test.m in ihren eigenen m-Dateien gespeichert werden sollen und nur test.m Zugriff darauf haben soll, erstellen Sie zuerst ein Unterverzeichnis in \MATLAB\temp\ namens private . Setzen Sie dann die einzelnen lokalen Funktions-M-Dateien von test.m in dieses private -Unterverzeichnis.

Das private -Unterverzeichnis muss nicht zum MATLAB-Pfad hinzugefügt werden (eigentlich sollte nicht zum Pfad hinzugefügt werden, damit die Dinge ordnungsgemäß funktionieren). Nur die Datei test.m und andere m-Dateien im Verzeichnis direkt über dem Unterverzeichnis private haben Zugriff auf die enthaltenen Funktionen. Mit privaten Funktionen können Sie das Verhalten von lokalen Funktionen (dh begrenzter Umfang, Überladen von Funktionen usw.), ohne dass alle Funktionen in dieselbe m-Datei geschrieben werden müssen (was bei einigen Anwendungen sehr groß werden kann).

    
gnovice 14.08.2009, 14:33
quelle
5

Vielleicht so etwas,

%Vor%

Selbstverständlich bleibt ModuleX nach dem Beenden von foobar in Ihrem Suchpfad. Wenn Sie den Standardpfad ohne Neustart festlegen möchten, fügen Sie folgende Zeile hinzu:

%Vor%

Weitere Informationen finden Sie ADDPATH .

    
Jacob 14.08.2009 13:11
quelle
1

Sie können Unterordner verwenden, die mit "+" beginnen, um Funktionen in Namespaces zu unterteilen.

Zum Beispiel:

Platzieren Sie eine Funktion "bar" im Ordner "+ foo"

%Vor%

Diese Funktion kann wie folgt verwendet werden:

%Vor%

Weitere Informationen finden Sie hier:

Was ist das nächste, was MATLAB für Namensräume hat?

    
user2599450 06.01.2015 17:29
quelle

Tags und Links