1

目前,我正在使用一个名为DIANA的有限元软件,我一直能够使用 MATLAB 执行批处理文件来运行“简单”模型。尽管如此,现在我开始使用更“复杂”的模型(只是更健壮,包含更多元素),但过程与我之前使用的过程完全相同。问题是现在我无法从 MATLAB 运行模型,它显然开始运行它,但突然停止。我正在使用下一个命令:

dos('path\filename.bat')

或者

system(fullfile(path,'filename.bat' ))

这两行都执行 .bat 文件。我认为我的文件有问题,所以我查看了它们,但显然它们没有任何问题。然后我只是双击 .bat 文件,程序运行没有问题。然后我意识到问题不在于文件,而在于 MATLAB 的执行。既然您知道了问题的背景,您能否给我一些建议以避免 MATLAB 在内部“杀死”该进程?

MATLAB 中显示的执行轨迹:

diana: working directory is *CURRENT DIRECTORY NAME*
diana: input file is *FILENAME*.dat
diana: command file is *FILENAME*.dcf
diana: output file is *FILENAME*.out
diana: filos file is diana.ff
DIANA JOB 8028 finished 

直接双击批处理文件中的trace执行如下:

在此处输入图像描述

上图中标注的文件中,包含模型的输出,直接从MATLAB执行时,没有出现,因为MATLAB之前完成了这个过程。

提前感谢您的任何回答!

Pd:我正在使用具有以下特性的计算机:Windows7、12 Gb RAM、OS 64 位、处理器 Intel Xeon 2.53 GHz。

4

2 回答 2

1

你运行的并不严格等同于双击.bat文件,特别是因为当前目录不同,如果批处理文件需要访问辅助文件(相对路径),则找不到文件。

尝试将此作为第一个命令添加到批处理文件中(或在 echo off 之后立即添加)

Cd /d %~dp0
于 2016-08-06T21:21:37.123 回答
0

以下是戴安娜支持团队提供的解决方案:

似乎 MATLAB 设置了一些限制每个线程的内存使用的环境符号。

当您通过重置符号的批处理文件从 Matlab 启动 Diana 时,一切正常。

这样的批处理文件可能如下所示:

rem === Diana Environment Setup ===
    call "C:\Program Files\Diana 10.0\dialogin.bat"

rem Unset the symbols added by MATLAB
    set KMP_STACKSIZE=
    set KMP_HANDLE_SIGNALS=
    set KMP_BLOCKTIME=

rem start the diana job
    diana test2
于 2016-11-25T10:31:53.897 回答