如何用matlab编译sdk编译类?

时间:2017-04-01 15:10:40

标签: java matlab matlab-deployment matlab-compiler

我想从matlab代码编译一个java包。 我有一个matlab课程:

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中我需要传递arguments.But我在matlab中的类构造函数没有参数。

在Java中我有一个Class1,我创建了一个新的对象。 这个对象现在让我可以访问我的构造函数:

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

1 个答案:

答案 0 :(得分:0)

有必要包装类的函数,因为matlab编译器sdk只能编译函数。

如果这是班级:

classdef MyClass 
   properties
      Prop1
   end

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

创建一个新的m。您的构造函数Wrapper函数的文件。此函数返回类的对象。

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

创建一个新的m。包装函数的文件 Wrapper函数返回作为参数传递的obj。

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

使用Matlab Compiler SDK编译这两个函数。 Myclass m File类也应该在同一目录中。 Matlab Compiler SDK自动识别依赖关系并在编译器选项中显示它。

在Java中,您现在可以调用createMyClassObject()函数,您将收到Matlab对象。将此Object传递给doSomethingWrapper()函数。