我今天問了一個關於使用Matlab-Simulink進行並行計算的問題。由於我之前的問題有點混亂,代碼中有很多事情並不屬於這個問題。用parfor(並行計算)的Simulink仿真
我的問題是
我想以模擬PARFOR環路的東西,而我的Simulink仿真採用了「從工作區」塊所需的數據從工作區融入模擬。由於某種原因,它不起作用。
我的代碼如下:
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-文件僅僅是一個零(100,20) -矩陣。這是Data的一個例子。
現在,如果我模擬腳本以下錯誤消息occures:
錯誤
使用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'.
現在你有一個想法,爲什麼出現這種情況?
奇怪的是,如果我嘗試訪問parfor-Loop內的'DemoData',它就會起作用。對於該代碼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 000000000億.....
非常感謝。這是一個很多(不必要的)細節原題: