Я задал сегодня вопрос о параллельных вычислениях с Matlab-Simulink. Поскольку мой предыдущий вопрос немного беспорядочен, и в коде есть много вещей, которые действительно не относятся к этой проблеме.Simulink-Simulation с parfor (Parallel Computing)
Моя проблема
Я хочу, чтобы имитировать что-то в parfor-Loop, в то время как мой Simulink-Simulation использует «From Workspace» блок для интеграции необходимых данных из рабочего пространства в моделировании. По какой-то причине он не работает.
Мой код выглядит следующим образом:
load DemoData
path = pwd;
apool = gcp('nocreate');
if isempty(apool)
apool = parpool('local');
end
parfor k = 1 : 2
load_system(strcat(path,'\DemoMDL'))
set_param('DemoMDL/Mask', 'DataInput', 'DemoData')
SimOut(k) = sim('DemoMDL')
end
delete(apool);
Мой моделирование выглядит следующим образом
DemoData-File является лишь нули (100,20) -Матрица. Это пример данных.
Теперь, если я имитировать следующее сообщение об ошибке сценария встречается,:
Ошибки
Ошибка при помощи DemoScript (строка 9)
Ошибка вычисления параметра 'DataInput' в «DemoMDL/Маска '
Призрак:
Error using parallel_function>make_general_channel/channel_general (line 907) Error evaluating parameter 'DataInput' in 'DemoMDL/Mask' Error using parallel_function>make_general_channel/channel_general (line 907) Undefined function or variable 'DemoData'.
Теперь у вас есть представление о том, почему это происходит ??
Странно, что если я попытаюсь получить доступ к «DemoData» внутри parfor-Loop, это сработает. Для excample с этим кодом:
load DemoData
path = pwd;
apool = gcp('nocreate');
if isempty(apool)
apool = parpool('local');
end
parfor k = 1 : 2
load_system(strcat(path,'\DemoMDL'))
set_param('DemoMDL/Mask', 'DataInput', 'DemoData')
fprintf(num2str(DemoData))
end
delete(apool);
Вот мой выход без моделирования и отображения данных
'>>' DemoScript 00000000000000000 .....
Спасибо большое. Это оригинальный вопрос с намного больше (ненужных) деталей: