看板 MATLAB 關於我們 聯絡資訊
版上各位好,小弟目前有隻以matlab寫成的主程式, 主要是製作.txt作為輸入檔案,並透過.bat去呼叫外部程式後輸出新的檔案, 之後再擷取新檔案的內容。 所製作的輸入檔案會分成四類,分別存在input1~4的資料夾中。 待輸入檔案製作完後,會去呼叫一隻.bat,.bat內主要是啟動四隻.exe_1~4, 用start的方式呼叫後同時啟動並個別處理對應編號的輸入資料夾內的檔案, 並將輸出檔案放在output1~4的資料夾。 我主要的問題在於,因為輸出檔案的數目在不同個案情況下不同, 而四隻.exe執行速度也不盡相同,有可能有一隻才跑80%,而其他已經結束, 是否有辦法在主程式中增加判斷式,當輸入與輸出檔案數量不同時,先暫停程序, 待全部.exe執行完畢,數量一致後再觸發程式繼續執行? 我目前的想法是,執行.bat後用while配合pause與特定秒數來反覆檢測檔案數目 dos(.bat)... while numel(dir(input))~=numel(dir(output)) pause(60) end fopen... 不知是否有更直觀或是更有效率的寫法? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.7.177 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1565881553.A.90C.html
sunev: 直接用system去call exe? 08/15 23:21
fxxkjoe1231: 這樣的話變成matlab有沒有類似start的指令可以同時多 08/15 23:28
fxxkjoe1231: 開.exe 08/15 23:29
sunev: 所以你要同時執行四個exe ? 08/16 00:07
sunev: 那就照你現在的邏輯吧 08/16 00:08
sunev: 可改用exist或是isfile來check outfile產生了沒有 08/16 00:09
sunev: 頻率可以高一點,一秒check一次之類的 08/16 00:09
sppmg: batch(@system, … 再用 wait等。試試把 job object 存成 08/17 00:29
sppmg: cell / array,讓 wait 一次等完。 08/17 00:29
sppmg: batch 可迴圈加入4個平行處理,不需你第一個 .bat 啟動。 08/17 00:33
sppmg: https://bit.ly/2KIQiiM 以前用 gnuplot 取代 MATLAB pl 08/17 00:38
sppmg: ot 畫圖的指令。 08/17 00:38