2014-06-24 85 views
1

我有2個.m文件。一個是函數,另一個(read.m)讀取函數並將結果導出到excel文件中。我有一個Java程序,對.m文件進行了一些更改。更改後,我想自動執行/運行.m文件。我已經下載了matlabcontrol.jar,我正在尋找一種方法來使用它來調用並運行讀取函數的read.m文件。 任何人都可以幫助我的代碼?謝謝如何通過java和matlab控件運行.m(matlab)文件?

我試過這段代碼,但它不起作用。

public static void tomatlab() throws MatlabConnectionException, MatlabInvocationException { 


     MatlabProxyFactoryOptions options = 
      new MatlabProxyFactoryOptions.Builder() 
       .setUsePreviouslyControlledSession(true) 
       .build(); 
     MatlabProxyFactory factory = new MatlabProxyFactory(options); 
     MatlabProxy proxy = factory.getProxy(); 


     proxy.eval("addpath('C:\\path_to_read.m')"); 
     proxy.feval("read"); 
     proxy.eval("rmpath('C:\\path_to_read.m')"); 

     // close connection 
     proxy.disconnect(); 

    } 
+0

你能更具體一些什麼「不工作」? – bdecaf

+0

@bdecaf它不會正確運行read.m文件。它在隨機目標文件夾中創建輸出(excel文件)。 – user3211165

+0

聽起來像Java部分很好,但read.m需要調試。你能發佈一個簡單的版本來顯示問題嗎? – bdecaf

回答

0

基於the official tutorial in the Wiki of the project,從這個API開始看起來非常簡單。

路徑操縱可能會有點棘手,但我想給一個嘗試加載整個腳本轉換爲字符串,並將其傳遞給eval請注意我有這個特定的MATLAB庫。沒有現成的經驗)。這可以很容易地完成(例如加入Files.readAllLines())。

希望能幫助一些東西。

+0

我是否需要將整個腳本傳遞給eval?沒有一種方法只是執行一個.m文件? – user3211165

+0

正如我所說,我不知道該API,但瀏覽完Javadoc後,我還沒有找到任何方法來做到這一點。可能有這樣的功能,雖然我寫的解決方法可能適合你。也許你應該問一下項目的討論清單。 – rlegendi