2014-10-18 137 views
4

我有以下問題:如何告訴Matlab它不應該等待函數的結果?除了線程還有其他方法嗎?讓Matlab繼續而不等待結果

我的問題:我有一個函數A,每隔幾秒由一個Timer調用。如果滿足特定事件,則在功能A中調用另一個功能B.功能B打開一個批處理文件。 我希望函數A繼續而不等待函數B結束。有沒有辦法輕鬆做到這一點?

對不起,如果這個問題已經被問到,但我找不到滿意的答案。請原諒我的英文不好。

我想感謝所有回答他們幫助的人。

回答

4

在你的函數B中,只需在該行的最後調用帶有&的批處理文件即可。

例如:

!mybatch.bat & 

這將在後臺運行模式下的文件mybatch.bat和呼叫後,立即返回執行Matlab的。

,或者您更完整的形式:

[status, result] = system('mybatch.bat &') 

但在這種情況下,它是一個有點用處,因爲系統調用mybatch的背景下,result變量始終是空的,status總是0(文件是否mybatch.bat被發現並執行與否)


編輯:這是在的情況下快速把戲它僅是放緩道指批處理文件執行你的節目。

如果你在函數B中有更多的matlab指令,並且你真的需要函數A繼續等待,那麼你將不得不建立一個包含函數B的偵聽器對象作爲回調函數。然後在你的函數A中,觸發事件(這將激活監聽器和調用函數B)。