2017-04-01 191 views
1

我想從matlab代碼編譯一個java包。 我在MATLAB類:如何用matlab編譯sdk編譯類?

classdef MyClass 
    properties 
     Prop1 
    end 
    events 
     Event1 
    end 
    methods 
     function obj = MyClass() // no arguments 
     if nargin > 0 
      obj.Prop1 = arg; 
     end 
     end 
    end 
end 

我試圖編譯它,但它不工作。它不可能編譯類。所以我嘗試編寫包裝函數。在我的Wrapper函數中,我調用我的classdef腳本並返回對象。 我可以編譯這個函數,但在java中我需要傳遞參數。但我在matlab中的類構造函數沒有參數。

在Java中我有一個Class1,我創建了一個新的對象。 這個對象現在讓我進入我的構造器:

Class1 matlabClassTest = new Class1(); 
matlabClassTest.MyClass(???); // her it ask for arguments 

回答

0

有必要包之類的功能,因爲MATLAB編譯SDK只能編譯功能。

如果是這種類:

classdef MyClass 
    properties 
     Prop1 
    end 

    methods 
    function obj= doSomething(obj,x) 
     obj.Prop1=x; 
     end 
    end 
end 

創建一個新的M。文件爲您的構造函數包裝函數。該函數返回該類的一個對象。

function obj=createMyClassObject() 
obj=MyClass(); 
end 

創建一個新的m。文件與您的包裝函數 包裝函數返回作爲參數傳遞的obj。

function obj= doSomethingWrapper(obj,x)  
obj.doSomething(x) 
end 

用Matlab Compiler SDK編譯這兩個函數。類Myclass m File也應該在同一個目錄中。 Matlab Compiler SDK會自動識別依賴項並在編譯器選項中顯示它。

在Java中,您現在可以調用createMyClassObject()函數,您將收到Matlab對象。將此對象傳遞給doSomethingWrapper()函數。