[討論] 暫停後待符合條件繼續執行

看板MATLAB作者 (魯到入味)時間5年前 (2019/08/15 23:05), 編輯推噓2(2010)
留言12則, 3人參與, 5年前最新討論串1/1
版上各位好,小弟目前有隻以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

08/15 23:21, 5年前 , 1F
直接用system去call exe?
08/15 23:21, 1F

08/15 23:28, 5年前 , 2F
這樣的話變成matlab有沒有類似start的指令可以同時多
08/15 23:28, 2F

08/15 23:29, 5年前 , 3F
開.exe
08/15 23:29, 3F

08/16 00:07, 5年前 , 4F
所以你要同時執行四個exe ?
08/16 00:07, 4F

08/16 00:08, 5年前 , 5F
那就照你現在的邏輯吧
08/16 00:08, 5F

08/16 00:09, 5年前 , 6F
可改用exist或是isfile來check outfile產生了沒有
08/16 00:09, 6F

08/16 00:09, 5年前 , 7F
頻率可以高一點,一秒check一次之類的
08/16 00:09, 7F

08/17 00:29, 5年前 , 8F
batch(@system, … 再用 wait等。試試把 job object 存成
08/17 00:29, 8F

08/17 00:29, 5年前 , 9F
cell / array,讓 wait 一次等完。
08/17 00:29, 9F

08/17 00:33, 5年前 , 10F
batch 可迴圈加入4個平行處理,不需你第一個 .bat 啟動。
08/17 00:33, 10F

08/17 00:38, 5年前 , 11F
https://bit.ly/2KIQiiM 以前用 gnuplot 取代 MATLAB pl
08/17 00:38, 11F

08/17 00:38, 5年前 , 12F
ot 畫圖的指令。
08/17 00:38, 12F
文章代碼(AID): #1TLNJHaC (MATLAB)
文章代碼(AID): #1TLNJHaC (MATLAB)