2014-08-27 58 views
2

我尽我所能按照并行工具箱的文档,但仍无法避免重复使用嵌套循环中索引的数组的问题。 问题是与变量节点parfor在matlab中。切片变量和嵌套循环

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限制?

+0

您是否预先分配了'node'?这可能会导致问题。 – Trogdor 2014-08-27 17:32:59

回答

4

按照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 

从里面包含了所有指标的矩阵,工作与它得到一个片,然后返回。