【问题标题】:parfor in matlab. sliced variable and nested loopmatlab中的parfor。切片变量和嵌套循环
【发布时间】:2014-08-27 15:46:10
【问题描述】:

我尽最大努力遵循并行工具箱的文档,但仍然无法避免重复使用嵌套循环中索引的数组的问题。 问题在于变量 node

parfor i=1:nX
   for j=1:nY


    [ind,dist]=findInCircle(node(i,j,:), part,r);

    UV=calcVelocity(part(ind,:), dist,node(i,j,:)) ;


    %here matlab complains that node is not indexed properly
    node(i,j,3)= UV(1);
    node(i,j,4)= UV(2);
    node(i,j,5)= UV(3);



   end


end

我不使用嵌套循环之外的数组,索引也是按照规则来的。我错过了另一个 parfor 限制吗?

【问题讨论】:

  • 您是否预先分配了node?这可能会导致问题。

标签: matlab parallel-processing parfor


【解决方案1】:

根据documentation,您不能像以前那样使用不同的索引:

在第一级圆括号或大括号内,索引列表对于给定变量的所有匹配项都是相同的

一个简单的解决方法是可能的:

parfor i=1:nX
   nodeSlice=node(i,:,:)

   for j=1:nY


    [ind,dist]=findInCircle(nodeSlice(j,:), part,r);

    UV=calcVelocity(part(ind,:), dist,nodeSlice(j,:)) ;


    %here matlab complains that node is not indexed properly
    nodeSlice(j,3)= UV(1);
    nodeSlice(j,4)= UV(2);
    nodeSlice(j,5)= UV(3);



   end
   node(i,:,:)=nodeSlice;

end

从包含所有索引的矩阵中获取一个切片,使用它然后返回它。

【讨论】:

    猜你喜欢
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多