2016-07-18 3 views
0

мне нужно вызвать функцию MatLab с различными входными аргументами в оболочке Linux, я написал цикл в следующем виде, и она работает:Linux кластер оболочке для параллельного моделирования MatLab

set c=1 

while ($c <= 5) 

#JOB='qsub -m abe -N Big_run - << EOJ matlab -nodisplay -nodesktop << M_PROG test ($c); M_PROG EOJ` 

@ c = $c + 1 

end 

Есть 2 проблемы, одна «несоответствует».

Другой - как передать входной аргумент функции matlab?

+1

Как это работает, если у вас есть эти 2 проблемы ... Вы имеете в виду, что у вас всего лишь цикл, но не команда? Что еще более важно, какая оболочка? –

ответ

1

Для вашей первой проблемы, просто используйте соответствующий апостроф ' вместо надгробного клеща `:

#JOB='qsub -m abe -N Big_run - << EOJ matlab -nodisplay -nodesktop << M_PROG test ($c); M_PROG EOJ' 

Для вашего второго вопроса, запустить его, как это ...

matlab -nodisplay -nodesktop -r "yourFunction(42)" 

.. . где 42 - ваш входной аргумент.

Дополнительная информация здесь: Unix commandline start: passing arguments to m file. Хороший пример от конца:

matlab -nosplash -nodisplay -nojvm -nodesktop -r "input('A'),input('B'),input('C','s')" 
+0

Я пытаюсь использовать следующую строку для вызова matlab командой qsub, но я получаю «Неоднозначное перенаправление ввода». error, Другими словами, как я могу запустить Matlab напрямую с помощью команды qsub? set JOB = 'qsub -m abe - << EOJ matlab -nodisplay -nodesktop << M_PROG 'test ($ c); exit' M_PROG EOJ' – Tom

Смежные вопросы