首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB: parfor错误

MATLAB: parfor错误
EN

Stack Overflow用户
提问于 2017-07-25 18:01:37
回答 1查看 149关注 0票数 0

我有下面的MATLAB代码,我想使用parfor来运行它:

代码语言:javascript
复制
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。我阅读了几个教程和文档,但我不知道如何使用parfor实现max的相同结果。

我知道在for j = (i+1):10中使用i有一些问题。

如有任何建议,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-25 19:51:35

您的对于依赖迭代,即在您的例子中,max是循环迭代之间的一个相依(共享)变量:

当循环中的迭代取决于其他迭代的结果时,不能使用parfor-循环。每个迭代必须独立于所有其他迭代。

这也反映在显示的警告消息中:

警告:临时变量max将在parfor循环的每次迭代开始时清除。在循环之前分配给它的任何值都将丢失。如果在parfor循环中分配max之前使用它,则会发生运行时错误。参见MATLAB中的并行循环,“临时变量”。

MATLAB实现了这条规则的一个例外,即约简变量

此规则的例外情况是使用约简变量在循环中累积值。

因此,您可以重写代码以使用约简变量:

代码语言:javascript
复制
maxX = -1;
for i = 1:10
    for j = (i+1):10
       maxX = max(maxX, my_function(i, j));
    end
end
disp(maxX)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45310588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档