Как скомпилировать класс с Matlab компилятора SDK?
Я хотел бы скомпилировать пакет Java из кода Matlab. у меня есть класс в 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
1 ответ
Необходимо обернуть функции класса, потому что компилятор Matlab SDK может только компилировать функции.
Если это класс:
classdef MyClass
properties
Prop1
end
methods
function obj= doSomething(obj,x)
obj.Prop1=x;
end
end
end
создать новый м. файл для вашей функции конструктора Wrapper. Эта функция возвращает объект класса.
function obj=createMyClassObject()
obj=MyClass();
end
создать новый м. файл с вашей функцией-оболочкой Функция Wrapper возвращает объект, переданный в качестве аргумента.
function obj= doSomethingWrapper(obj,x)
obj.doSomething(x)
end
Скомпилируйте обе функции с помощью Matlab Compiler SDK. Класс Myclass m File также должен находиться в том же каталоге. Matlab Compiler SDK автоматически распознает зависимость и показывает ее в опциях компилятора.
В Java вы можете теперь вызвать функцию createMyClassObject(), и вы получите объект Matlab. Передайте этот объект в функцию doSomethingWrapper().