Запуск пакетного файла MATLAB - ДИАНА ТНО
В настоящее время я работаю с конечно-элементным программным обеспечением под названием 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
Выполнение трассировки при двойном щелчке в командном файле выглядит следующим образом:
В отмеченных файлах, показанных на предыдущем рисунке, содержатся выходные данные модели, но при непосредственном выполнении из MATLAB они не отображаются, поскольку MATLAB завершает процесс раньше.
Заранее спасибо за любой ответ!
Pd: Я использую компьютер со следующими характеристиками: Windows7, 12 Гб оперативной памяти, ОС 64 бит, процессор Intel Xeon 2.53 ГГц.
2 ответа
То, что вы запускаете, не является строго эквивалентным двойному щелчку по файлу.bat, особенно потому, что текущий каталог отличается, и если пакетному файлу требуется доступ к вспомогательным файлам (относительный путь), файлы не будут найдены.
Попробуйте добавить это в свой пакетный файл в качестве первой команды (или сразу после отключения эха)
Cd /d %~dp0
Вот решение, предоставленное службой поддержки Diana:
Кажется, что MATLAB устанавливает некоторые символы среды, которые ограничивают использование памяти на поток.
Когда вы запускаете Diana из Matlab через командный файл, который сбрасывает символы, все работает нормально.
Такой командный файл может выглядеть так:
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