如何用matlab compiler sdk编译class?

how to compile class with matlab compiler sdk?

我想从 matlab 代码编译一个 java 包。 我在 matlab 中有一个 class:

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

我试图编译它,但它不起作用。编译 classes 是不可能的。所以我尝试编写包装函数。在我的 Wrapper 函数中,我将我的 classdef 脚本称为 return 对象。 我可以编译这个函数,但是在 java 中我需要传递 arguments.But 我在 matlab 中的 class 构造函数没有参数。

在 Java 中,我有一个 Class1,我为它创建了一个新对象。 这个对象现在允许我访问我的构造函数:

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

需要对class的函数进行封装,因为matlab compiler sdk只能编译函数。

如果这是 class:

classdef MyClass 
   properties
      Prop1
   end

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

创建一个新的 m。构造函数 Wrapper 函数的文件。这个函数returns一个对象class.

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

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

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

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

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