2017-04-01 1 views
1

내가 matlab에 코드에서 자바 패키지를 컴파일하고 싶습니다. 은 내가 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 

나는 그것을 컴파일하려고하지만 작품을 나던. 클래스를 컴파일 할 수 없습니다. 그래서 래퍼 함수를 ​​작성하려고합니다. 내 래퍼 함수에서 내 classdef 스크립트를 호출하고 객체를 반환합니다. 이 함수를 컴파일 할 수 있지만 Java에서 arguments.But 내 클래스 생성자 matlab에 인수를 전달해야합니다.

Java에서 내가 Class1 있고 그 중 새 개체를 만듭니다. 이 개체는 지금 내 생성자 나에게 액세스 권한을 부여 : MATLAB 컴파일러 SDK는 기능을 컴파일 할 수 있기 때문에 클래스의 기능을 래핑하는 것이 필요하다

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

답변

0

.

이 클래스 인 경우 :

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을 만드십시오. 래퍼 함수가있는 파일 래퍼 함수는 인수로 전달 된 obj를 반환합니다.

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

은 matlab에 컴파일러 SDK와 기능을 모두 컴파일합니다. Myclass m File 클래스도 같은 디렉토리에 있어야합니다. Matlab 컴파일러 SDK는 의존성을 자동으로 인식하여 컴파일러 옵션에 표시합니다.

Java에서는 이제 createMyClassObject() 함수를 호출 할 수 있으며 Matlab 객체를 수신하게됩니다. 이 객체를 doSomethingWrapper() 함수에 전달하십시오.

관련 문제