2012-06-29 161 views
1

我需要幫助通過MatlabControl在Java和MATLAB之間進行連接。MATLAB環境下運行MATLAB函數時發生異常

首先,我想在演練中測試代碼,但每一次我得到相同的異常:

myfunc.m:

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

的Java:

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

感謝ü非常:)現在它的從java打開matlab,但是你知道我是否可以通過MatlabControl從Java通過圖像路徑到matlab,反之亦然?因爲我正在製作java圖形用戶界面來匹配兩個數字之間的一個我打開在Java GUI和另一個輸出matlb匹配函數,,,如果你可以指導我一點點在MatlabControl功能,因爲我是新來的, ,再次感謝 。 – user1318251

+0

@ user1318251:嘗試傳遞圖像名稱時,你在線調用你的MATLAB函數:'proxy.eval(「myMatlabFunction('/ path/to/image.png')」);' – Amro

+0

我做了你告訴我的,但我得到了這個錯誤「錯誤使用eval 未定義的函數'hgr'輸入參數的類型'字符'」和我的matlab函數是 – user1318251