2012-01-16 76 views
1

我試圖使用使用MATLAB:用Java命令Matlab的

  1. 創建一個新的Java進程產卵Matlab的的第二個實例,然後

  2. 寫命令到第二來自Matlab的第一個實例的Matlab實例。

該代碼似乎運行良好,但我沒有看到任何出現在第二個Matlab實例的命令窗口中。我究竟做錯了什麼?

我試過的代碼是:

% Start a 2nd instance of Matlab 
MatlabProcess = java.lang.Runtime.getRuntime().exec('matlab -nosplash'); 
pause(20); % I don't know if this pause is really needed. 

% Set up a buffered Java stream writer to write to the new Matlab Process 
OutputStream   = MatlabProcess.getOutputStream(); 
OutputStreamWriter  = java.io.OutputStreamWriter(OutputStream); 
OutputBufferedWriter = java.io.BufferedWriter(OutputStreamWriter); 

% Write some text to the 2nd Matlab Instance 
OutputBufferedWriter.write('pi\n'); 
OutputBufferedWriter.flush(); 

回答

1

我相信你會得到一個命令窗口,或使用標準輸入/輸出,而不是兩個,取決於MATLAB進程是否是交互式的。

+0

當我啓動秒的Matlab實例: MatlabProcess = java.lang.Runtime.getRuntime()。exec('matlab -nosplash -nodesktop'); 然後命令窗口不會啓動,我可以通過getInputStream()從Matlab的衍生實例讀取輸出。 雖然我仍然不能用上面的代碼寫入輸出流。代碼似乎執行正常,但似乎沒有寫入Matlab的第二個實例。 – Greg 2012-01-16 07:03:28

+0

@Greg:你不寫入輸出流,你寫入輸入流(這意味着子進程的標準輸入)。等等,不,Java文檔全部搞砸了。 – 2012-01-16 07:10:24

+0

感謝您的回覆。我對Java相當陌生,並且對寫入InputStream的想法感到困惑。 據我所知,Java InputStreams沒有write()方法。然而,Java OutputStreams可以: http://docs.oracle.com/javase/1.4.2/docs/api/java/io/OutputStream.html 我一定錯過了一些東西,但我很難理解它是什麼。 – Greg 2012-01-16 07:28:49