2014-08-27 286 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 

從裏面包含了所有指標的矩陣,工作與它得到一個片,然後返回。