我有一个循环遍历几个不同值组合的脚本。此脚本使用值组合调用main,然后调用parfor来访问不同的值。以下是我的代码的虚拟简化。如果需要,我将提供完整的代码。
循环:
a = [0.3, 0.4, 0.5, 0.6, 0.7, 0.8];
b = [5,10,15,20,25,30];
c = [0,1];
% Iterate over all possible combinations
for p = 1:length(a)
for s = 1:length(b)
for e = 1:length(c)
main(p,s,e); clear all;
end
end
end
主:
function main (p,s,e)
parfor k = 1:51
if(e)
display('Foobar');
end
end
end
所以我基本上想在输入参数的帮助下在parfor循环中决定做什么(例如如何创建间隔等)。我不想编辑这些参数,只需阅读并使用它们。
现在我收到以下错误:
对于'e',工人抛出了UndefinedFunction错误。这个 可能是因为包含'e'的文件无法访问 工作人员。使用addAttachedFiles(池,文件)指定所需的 要附加的文件。请参阅文档 'parallel.Pool / addAttachedFiles'了解更多详情。
我不明白为什么这不起作用。再次定义e,就像 e2 = e 也没有帮助。
问候
编辑: 实际上似乎工作的是当我不将for循环的变量直接传递给main但实际上使用像预期的数组。 E.g:
main(a(p),b(s),c(e))
答案 0 :(得分:0)
我找到了解决方案。 我试图将分配的变量传递给主函数。这是不可能的。 我现在真正想要(并且做了)的是将之前定义的数组中的值传递给main函数。
a = [0.3, 0.4, 0.5, 0.6, 0.7, 0.8];
b = [5,10,15,20,25,30];
c = [0,1];
% Iterate over all possible combinations
for p = 1:length(a)
for s = 1:length(b)
for e = 1:length(c)
main(a(p),b(s),c(e)); clear all;
end
end
end