Wie arrangiere ich Matlab-Code?

8

Nehmen wir an, ich habe etwas MATLAB-Code, der einige Funktionen verwendet. Ich möchte die Funktionen nicht in derselben Datei wie der Code definieren, der verwendet wird die Funktionen.

Andererseits ist die Lösung, eine m-Datei für jede Funktion zu erstellen, auch nicht gut für mich, weil ich nicht viele Dateien haben möchte. Was ich will, ist so etwas wie eine Utils-Datei, die diese Funktionen enthält, aus denen ich die Funktionen importieren kann, wie wir es zum Beispiel in Python machen.

Was würden Sie empfehlen?

    
yaron 23.10.2015, 11:26
quelle

2 Antworten

12

Was Sie wahrscheinlich wollen, ist ein Paket , das ist ein bisschen wie ein Python-Modul, da es ein Ordner ist, der mehrere Dateien enthalten kann. Dazu fügen Sie am Anfang des Ordnernamens ein + ein, z. B. +mypackage . Sie können dann auf die Funktionen und Klassen im Ordner zugreifen, indem Sie die package.function -Notation ähnlich wie in Python verwenden, ohne dabei die globale Liste der Funktionen zu beeinträchtigen (nur das Paket wird der globalen Liste und nicht jeder Funktion hinzugefügt). Sie können auch einzelne Funktionen oder Klassen importieren. Sie müssen jedoch immer den vollständigen Funktionspfad verwenden, es gibt keine relativen Pfade wie in Python.

Wenn Sie jedoch wirklich mehrere Funktionen pro Datei wünschen, erstellen Sie am besten eine Funktion auf oberster Ebene, die ein struct von Funktionsgriffen für die anderen Funktionen in der Datei, und greifen Sie dann auf die Funktion behandelt von dieser Struktur. Da MATLAB die Verwendung von () nicht mit Funktionen erfordert, die keine Eingaben erfordern, würde dies sich oberflächlich ähnlich wie ein Python-Modul verhalten (obwohl ich nicht weiß, wie es die Leistung beeinflusst).

Ich weiß, das ist ein Nackenschmerz. Es gibt keinen Grund, warum mathworks keine Dateien als Pakete verwenden könnte, wie sie es derzeit für Ordner tun, beispielsweise indem Sie + an den Anfang des Dateinamens setzen. Aber sie nicht.

    
TheBlackCat 23.10.2015, 11:35
quelle
2

Eine Lösung, die Ihren Vorstellungen entspricht, könnte die Verwendung von Klassen sein. Eine Klasse enthält Methoden, die öffentlich (von außen sichtbar) oder privat (nur von innen sichtbar) sein können. Implementierungen der Methoden einer Klasse können entweder in mehreren Dateien oder in der gleichen Datei.

Hier ist ein einfaches Beispiel

%Vor%

Anwendungsbeispiel -:

%Vor%     
gregswiss 23.10.2015 13:56
quelle

Tags und Links