parfor在matlab中实现。切片变量和嵌套循环
我尽了最大努力遵循并行工具箱的文档,但仍然无法避免重用嵌套循环中索引的数组的问题。 问题在于变量节点 我不使用嵌套循环之外的数组,索引也是根据规则进行的。我是否错过了另一个parfor限制?根据,您不能像以前那样使用不同的索引: 在第一级括号或大括号内,对于给定变量的所有引用,索引列表是相同的 一个简单的解决方法是可行的:parfor在matlab中实现。切片变量和嵌套循环,matlab,parallel-processing,parfor,Matlab,Parallel Processing,Parfor,我尽了最大努力遵循并行工具箱的文档,但仍然无法避免重用嵌套循环中索引的数组的问题。 问题在于变量节点 我不使用嵌套循环之外的数组,索引也是根据规则进行的。我是否错过了另一个parfor限制?根据,您不能像以前那样使用不同的索引: 在第一级括号或大括号内,对于给定变量的所有引用,索引列表是相同的 一个简单的解决方法是可行的: parfor i=1:nX nodeSlice=node(i,:,:) for j=1:nY [ind,dist]=findInCircle(nod
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
从包含所有索引的矩阵中获取一个切片,使用它,然后返回它。您是否预先分配了
节点
?这可能会引起问题。
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