【发布时间】:2016-06-10 11:41:10
【问题描述】:
我今天问了一个关于使用 Matlab-Simulink 进行并行计算的问题。由于我之前的问题有点乱,而且代码中有很多东西并不真正属于问题。
我的问题是
我想在 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 只是一个 zeros(100,20)-Matrix。这是 Data 的示例。
现在如果我模拟脚本会出现以下错误消息:
错误
使用 DemoScript 时出错(第 9 行)
在“DemoMDL/Mask”中评估参数“DataInput”时出错
原因:
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”,它会起作用。以该代码为例:
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);
这是我的输出,没有模拟和显示数据
'>>'演示脚本 00000000000000000 .....
非常感谢。这是带有更多(不必要)细节的原始问题:
【问题讨论】:
标签: matlab parallel-processing simulink parfor