2012-06-29 4 views
1

MatlabControl을 통해 Java와 MATLAB간에 연결하는 데 도움이 필요합니다. Matlab 외부에서 MATLAB 함수를 실행할 때 MatlabControl에서 예외가 발생했습니다.

우선 내가 연습에 코드를 테스트하고 싶었지만 때마다 나는 같은 예외를 가지고 :

myfunc.m :

function myfunc() 
    disp('hello from MYFUNC') 
end 

자바 :

class ShowImage { 

public static void main(String[] args) 
     throws MatlabConnectionException, MatlabInvocationException 
    { 
     // create proxy 
     MatlabProxyFactoryOptions options = 
      new MatlabProxyFactoryOptions.Builder() 
       .setUsePreviouslyControlledSession(true) 
       .build(); 
     MatlabProxyFactory factory = new MatlabProxyFactory(options); 
     MatlabProxy proxy = factory.getProxy(); 

     // call builtin function 
     proxy.eval("disp('hello world')"); 

     // call user-defined function (must be on the path) 
     proxy.eval("addpath('E:\\vm')"); 
     proxy.feval("myfunc"); 
     proxy.eval("rmpath('E:\\vm)"); 

     // close connection 
     proxy.disconnect(); 

}} 

여기가의 예외 :

Exception in thread "main" matlabcontrol.MatlabConnectionException: Could not launch MATLAB. Command: [matlab, -r, javaaddpath 'C:\Users\walaa\Desktop\matlabcontrol-4.0.0.jar'; matlabcontrol.MatlabClassLoaderHelper.configureClassLoading(); javarmpath 'C:\Users\walaa\Desktop\matlabcontrol-4.0.0.jar'; matlabcontrol.MatlabConnector.connectFromMatlab('PROXY_RECEIVER_42dd44d9-815e-41ad-bec9-e469718b5710', 2100);] 
    at matlabcontrol.RemoteMatlabProxyFactory.createProcess(RemoteMatlabProxyFactory.java:305) 
    at matlabcontrol.RemoteMatlabProxyFactory.requestProxy(RemoteMatlabProxyFactory.java:116) 
    at matlabcontrol.RemoteMatlabProxyFactory.getProxy(RemoteMatlabProxyFactory.java:134) 
    at matlabcontrol.MatlabProxyFactory.getProxy(MatlabProxyFactory.java:81) 
    at ShowImage.main(ShowImage.java:19) 
Caused by: java.io.IOException: Cannot run program "matlab": CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessBuilder.start(Unknown Source) 
    at matlabcontrol.RemoteMatlabProxyFactory.createProcess(RemoteMatlabProxyFactory.java:292) 
    ... 4 more 
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessImpl.create(Native Method) 
    at java.lang.ProcessImpl.<init>(Unknown Source) 
    at java.lang.ProcessImpl.start(Unknown Source) 
    ... 6 more 

나는 무엇이 문제인지 모르겠다. 어떤 도움도 감사 할 것이다 !!

답변

1

나는이 예제를 here에서 사용한다고 가정합니다. 물론이 시험을 할 때, 작업, 단지 MATLAB은 Windows 경로에 있는지 확인 (오류 메시지는 프로그램을 찾을 수 있음을 시사한다 "matlab.exe")

screenshot

+0

매우 유 감사합니다 :) 지금이야 자바에서 개방 matlab을하지만, 만약 내가 matlabControl을 통해 자바에서 matlab에 이미지 경로를 전달할 수 있고 그 반대도 안 알아? 왜냐하면 내가 GUI를 두 개의 숫자 사이에 일치하는 자바 GUI를 만들고있어 내가 GUI를 조금 열어 matlabControl 함수를 좀 안내 할 수 있다면, 제발 자바 GUI와 다른 기능을 matlb 일치하는 함수에서 하나의 출력에 열어 내가 새로운거야 고마워. – user1318251

+0

@ user1318251 : 줄에 MATLAB 함수를 호출 할 때 이미지 이름을 전달하십시오 :'proxy.eval ("myMatlabFunction ('/ path/to/image.png')") ") – Amro

+0

이 오류가 발생했습니다 "오류가 발생했습니다. 'char'유형의 입력 인수에 대해 정의되지 않은 함수 'hgr'이 있습니다. 내 matlab 함수가 – user1318251