Проблемы с циклом parfor при выполнении командной строки

Я пытаюсь выполнить этот фрагмент кода:

parpool('local',4);

range = 1000;

parfor i = 1:range
    A_test(i) = sqrt(i);
end

Он отлично работает в окне MATLAB-Desktop, но когда я пытаюсь запустить его из командной строки, используя

matlab -nosplash -nodesktop -r "run script.m"

Я получаю следующую ошибку:

Error using onCleanup (line 50)
Not enough input arguments.

Error in parfor_test (line 9)
parfor i = 1:range

Error in run (line 96)
evalin('caller', [script ';']);

Я читал, что мне, возможно, придется предварительно выделить вектор A_test, поэтому я изменил код следующим образом:

parpool('local',4);

range = 1000;

A_test = zeros(1,range);

parfor i = 1:range
    A_test(i) = sqrt(i);
end

Теперь я не получаю никаких ошибок, но A_test не заполняется sqrt-числами, а остается заполненным нулями. Есть ли у вас какие-либо идеи, что я могу сделать, чтобы исправить эту ошибку?


person glykokalyx    schedule 18.06.2015    source источник


Ответы (1)


Вам не нужно использовать run в вашей команде. Просто сделать:

matlab -nosplash -nodesktop -r "script"

редактировать Только что понял, что у меня была опечатка в приведенной выше команде (нет необходимости в расширении .m -> это вызовет ошибку)

person matlabgui    schedule 18.06.2015
comment
Это не работает. Я получаю сообщение об ошибке Неожиданный оператор MATLAB. - person glykokalyx; 19.06.2015
comment
у меня работает... Какую версию Matlab вы используете? - person matlabgui; 19.06.2015
comment
MATLAB R2015a — академическое использование - person glykokalyx; 19.06.2015
comment
У меня нет R2015a, чтобы протестировать его, но я не могу представить, что это проблема... Что он говорит, если вы набираете lasterror в командном окне? - person matlabgui; 19.06.2015