我是用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秒,即使任务在更短的时间内完成。
有人能解释Matlab行为的变化吗?有谁有比我更聪明的工作方法吗?
发布于 2016-05-02 05:47:51
应该注意的是,Matlab是一个解释器,而不是编译器。这意味着它执行了许多对开发人员隐藏的内部操作,其中一些操作可能需要大量CPU资源。就CPU和RAM资源的使用而言,有限元应用程序在数值上是非常密集的。使用Matlab进行有限元编程可能不是一个好主意。尝试使用一些面向数字的语言,比如C或Fortran,在这些语言中,您可以完全控制内存分配和算术操作。
https://stackoverflow.com/questions/36797545
复制相似问题