2016-04-22 159 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,您可以完全控制内存分配和算术运算。