MATLAB:parforerror
我有以下MATLAB代码,我想使用parfor运行它:MATLAB:parforerror,matlab,for-loop,iteration,parfor,Matlab,For Loop,Iteration,Parfor,我有以下MATLAB代码,我想使用parfor运行它: max = -1; for i = 1:10 for j = (i+1):10 X = my_function(i, j); if (X > max) max = X; end end end disp(max) 我想把第一个换成帕弗。我阅读了一些教程和文档,但我不知道如何使用parfor获得与max相同的结果 我知道在j=(I+1):10的中使用I有一
max = -1;
for i = 1:10
for j = (i+1):10
X = my_function(i, j);
if (X > max)
max = X;
end
end
end
disp(max)
我想把第一个换成帕弗。我阅读了一些教程和文档,但我不知道如何使用parfor获得与max相同的结果
我知道在j=(I+1):10的中使用I有一些问题
如果有任何建议,我将不胜感激。您,即在您的情况下,max
是循环迭代之间的一个依赖(共享)变量:
当循环中的迭代依赖于时,不能使用parfor循环
其他迭代的结果。每个迭代必须独立于
所有其他的
这也反映在显示的警告消息中:
警告:临时变量max
将在开始时清除
parfor循环的每个迭代的。之前分配给它的任何值
循环将丢失。如果在中指定前使用了max
对于循环,将发生运行时错误。有关中的循环,请参见并行
MATLAB,“临时变量”
MATLAB实现,即:
这条规则的例外是
使用在循环中累积值
因此,您可以重写代码以使用简化变量:
maxX = -1;
for i = 1:10
for j = (i+1):10
maxX = max(maxX, my_function(i, j));
end
end
disp(maxX)
您,即在您的情况下,max
是循环迭代之间的依赖(共享)变量:
当循环中的迭代依赖于时,不能使用parfor循环
其他迭代的结果。每个迭代必须独立于
所有其他的
这也反映在显示的警告消息中:
警告:临时变量max
将在开始时清除
parfor循环的每个迭代的。之前分配给它的任何值
循环将丢失。如果在中指定前使用了max
对于循环,将发生运行时错误。有关中的循环,请参见并行
MATLAB,“临时变量”
MATLAB实现,即:
这条规则的例外是
使用在循环中累积值
因此,您可以重写代码以使用简化变量:
maxX = -1;
for i = 1:10
for j = (i+1):10
maxX = max(maxX, my_function(i, j));
end
end
disp(maxX)
你没有。将所有X
值保存在一个数组中,然后查找max
。将变量命名为与内置函数相同也是一个非常糟糕的想法。这使得再次使用该功能有点痛苦。包含错误/警告消息可能是获得更好答案和可重复使用问题的好主意。你没有。将所有X
值保存在一个数组中,然后查找max
。将变量命名为与内置函数相同也是一个非常糟糕的想法。这使得再次使用该功能有点痛苦。包含错误/警告消息可能是获得更好答案和可重用问题的好主意。