2016-04-22 193 views
0

我正在使用matlab自動參數並啓動一個有限元方法代碼。我寫了一個參數文本文件的有限元程序會讀取,然後調用與FEM代碼:Matlab「系統」命令卡住

[status,cmdout]=system(['FEMApp ' current_folder '\MyFile']); 

有時候,有限元應用程序將無法完成其任務,並在命令發送錯誤信息窗口。到現在爲止,我能夠在cmdout中檢測到錯誤消息,然後繼續下一個參數集。

由於未知原因,系統命令開始表現不同:它看起來永遠被卡住(Matlab始終處於「忙碌」模式)。沒有意識到我有沒有改變什麼?

現在,我使用了以下解決方案:

[status,cmdout]=system(['FEMApp ' current_folder '\MyFile &']); 
pause(45) 
system(['taskkill' 'FEMProcessus') 

它工作正常,但它減緩我的計算有很多(〜X5),因爲Matlab的總​​會等到45個secondes完成任務,即使時間少得多。

任何人都可以解釋在Matlab的行爲改變? 有沒有人比我更聰明的工作?

回答

0

應該指出,Matlab是一個解釋器而不是編譯器。這意味着它執行了很多內部操作,對開發人員來說是隱藏的,其中一些可能需要大量的CPU資源。就使用CPU和RAM資源而言,有限元應用在數值上非常強烈。使用Matlab進行FEM編程可能不是一個好主意。嘗試使用一些面向數字的語言,例如C或Fortran,您可以完全控制內存分配和算術運算。