Запуск функции Matlab из командной строки linux - синтаксическая ошибка? - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть функция matlab checkMembraneSpline.m, и я хочу запустить ее в командной строке с помощью команды matlab. Я попробовал следующее

matlab -r -nodisplay -nojvm "checkMembraneSpline(10,1000,'',100,500,2.5); catch; end; quit"

, которое возвращает эту криптовую c ошибку:

/opt/apps/rhel7/matlabR2019a/bin/matlab: eval: line 1734: syntax error near unexpected token `('
/opt/apps/rhel7/matlabR2019a/bin/matlab: eval: line 1734: `exec  "/admin/apps/rhel7/matlabR2019a/bin/glnxa64/MATLAB"  -r "-nodisplay" checkMembraneSpline(10,1000,'',100,500,2.5); catch; end; quit -nojvm'

Однако, когда я запускаю matlab, выполняя matlab -nojvm -nodisplay и запуская функцию оттуда с помощью

>>> checkMembraneSpline(10,1000,'',100,500,2.5)

это работает. Я подозревал, что это связано с кавычками, но переключение " с ' также не работает. Чего мне не хватает?

1 Ответ

2 голосов
/ 07 апреля 2020

Оператор должен следовать сразу после переключателя -r:

matlab -nodisplay -nojvm -r "checkMembraneSpline(10,1000,'',100,500,2.5); catch; end; quit"

Если у вас более новая версия MATLAB, используйте вместо нее переключатель -batch:

matlab -nojvm -batch "checkMembraneSpline(10,1000,'',100,500,2.5);"

С этим новым переключателем вам не нужно звонить exit, он всегда завершает работу после утверждения оператора. Следовательно, также нет необходимости отлавливать ошибки. Выход выводится в терминал по умолчанию. Гораздо проще!

Ссылка: https://www.mathworks.com/help/matlab/ref/matlablinux.html

...