Я выполняю файл Windows .exe 'в командной строке' cmd 'для различных входов через Matlab. Команды следующие.Параллельные вычисления с использованием Matlab
for i = 1:n
filename = sprintf('input_%d.dat',i);
string = sprintf('!sfbox.exe %s', filename);
eval(string)
end
Все входные файлы присутствуют и независимы друг от друга. Но если я попытаюсь распараллелить выполнение с помощью «parfor» следующим образом,
parfor i = 1:n
filename = sprintf('input_%d.dat',i);
string = sprintf('!sfbox.exe %s', filename);
eval(string)
end
я получаю ошибку, но код работает последовательно без остановки
Explanation
MATLAB runs parfor loops on multiple MATLAB workers that have
multiple workspaces. The indicated function might not access the
correct workspace; therefore, its usage is invalid.
Есть правильный способ выполнения Eval используя парформу?
(PS: Я попытался вручную выполнить несколько файлов .exe в командной строке cmd, и в командной строке возможно запустить несколько файлов .exe. Проблема заключается в том, как я пытаюсь сделать это в Matlab. методы.)
Вы правы. Я должен был использовать 'system' напрямую. Оно работает. Я использовал 'eval' из-за проблем, с которыми я столкнулся с командой' system' во время разработки. –