2017-01-20 29 views
1

我正在使用外部解算器来运行模拟。我试图从MATLAB脚本中调用带有系统(cmd)的外部求解器。 cmd本身运行良好,终端没有问题(我在OSX上运行)。但是,每次运行MATLAB脚本时,状态都是139 - 分段错误。有谁知道为什么会发生这种情况?MATLAB系统命令给出分割错误?

+1

这真的不可能告诉。这是外部程序的问题,而不是MATLAB。你有外部程序依赖的环境变量吗? – Suever

+0

是的,我的主目录中有一定的环境变量.bash_profile – jfherrm

+0

没错,所以当你使用MATLAB的'system'命令时,这些参数都不受尊重。您需要使用'setenv'来设置必要的环境变量 – Suever

回答

1

当执行system命令,这是一样从终端运行的程序,因为你可能有你的终端会话中(通过~/.bashrc~/.bash_profile),它们会影响程序的访问方式定义的环境变量并运行。

如果您需要设置程序成功运行的环境变量,请在调用system之前使用MATLAB内部的setenv

0

我和我的Matlab(R2016b)有同样的问题,但解决方案恰恰相反。

而不是缺少变量,system()定义LD_LIBRARY_PATH重定向到一些与Matlab打包的共享库,没有与我的程序坐得很好。在我的脚本中清除LD_LIBRARY_PATH后,一切正常。你可以这样做,例如:

env -u LD_LIBRARY_PATH