как скомпилировать класс с SDK компилятора 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 мне нужно передать аргументы. Но мой конструктор класса в Matlab не имеет аргументов.

в Java у меня есть Class1, и я создаю для него новые объекты. Этот объект теперь дает мне доступ к моему конструктору:

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

person Khan    schedule 01.04.2017    source источник


Ответы (1)


необходимо обернуть функции класса, потому что sdk компилятора matlab может только компилировать функции.

Если это класс:

classdef MyClass 
   properties
      Prop1
   end

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

создать новый м. файл для вашей функции-оболочки конструктора. Эта функция возвращает объект класса.

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

создать новый м. файл с вашей функцией-оболочкой Функция-оболочка возвращает объект, переданный в качестве аргумента.

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

Скомпилируйте обе функции с помощью Matlab Compiler SDK. Файл класса Myclass m также должен находиться в том же каталоге. Matlab Compiler SDK автоматически распознает зависимость и показывает ее в параметрах компилятора.

В Java теперь вы можете вызвать функцию createMyClassObject(), и вы получите объект Matlab. Передайте этот объект функции doSomethingWrapper().

person Khan    schedule 04.05.2017