2016-09-01 7 views
1

Ich habe meine eigene Klassendatei in Matlab erstellt.Importieren Sie Ihre eigene Klasse in Matlab

classdef Impact 
%IMPACT Summary of this class goes here 
% Detailed explanation goes here 

    properties 
     V  
    end 

    methods(Static)   
     function Imp=Func(A) 
      B=V*A^2; 
     end 
    end 

end 

Es ist möglich, die Funktion Func wie out=Func(input) statt out=Impact.Func(input) zu nennen. Ich höre über import Befehl, aber ich weiß nicht, wie man es benutzt, wenn die Klasse nicht in einem Paket ist.

Vielen Dank im Voraus. Grüße.

Antwort

4

Per Dokumentation für import und der Importing Classes weitere Lektüre:

import Impact.*

Werden alle öffentlichen statischen Methoden von Impact in Ihrer Basis-Arbeitsbereich importieren. Private statische Methoden werden importiert, können aber nicht aufgerufen werden.

Zum Beispiel mit der folgenden Klassendefinition:

classdef testcode 
    methods(Static) 
     function test 
      disp('hi') 
     end 
    end 
end 

Und die folgenden Befehle:

import testcode.* 
test 

Returns:

>> test 
hi 

aber sagen, dass Funktionen in Ihren Namensraum zu importieren willkürlich wie dies ist sehr nicht eine gute Idee und kann leicht zu Namespace Zusammenstöße und Verwirrung führen.

Per der Dokumentation:

Vermeiden Sie diese Syntax verwenden, wie Importieren von Paketen bringt eine nicht näher bezeichnete Reihe von Namen in dem lokalen Bereich, die mit Namen in der MATLAB-Workspace in Konflikt geraten könnten. Eine mögliche Verwendung für diese Syntax besteht darin, einen Teilpaketnamen zu importieren. Wenn Sie dann eine Funktion aufrufen, verwenden Sie einen kürzeren Paketnamen, der nicht mit einfachen Funktionsnamen in Konflikt steht. Für Beispiel hat das matlab.io.hdf4.sd Paket eine close Funktion, die Konflikt mit der MATLAB close Funktion kann.


können Sie auch spezifische statische Methoden importieren, was eine leichte Verbesserung gegenüber dem oben ist aber IMO die Einschränkung ist immer noch anwendbar.

Zum Beispiel:

import testcode.test 
test 

Gibt denselben Wert wie im vorherigen Beispiel.

+0

Einfacher, dass ich erwartet hatte. Ich erkannte nicht die Möglichkeit, es als Paket zu importieren. Ich denke, in diesem Zusammenhang machen die Eigenschaften einer Klasse nicht zu viel Sinn. Habe ich recht? Vielen Dank! –

+0

Nein, das macht keinen Sinn. – excaza

Verwandte Themen