2009-05-15 3 views
0

MATLAB에서 첫 번째 루프 세트는 중복을 나타내지 만 PARFOR을 사용하는 두 번째 루프 세트는 그렇지 않습니다. 이전 값을 덮어 씁니다. 어떻게 수정합니까?PARFOR 루프에서 복제본을 쓸모 없게 덮어 씁니다.

루프를 들어

:

for d = 1:length(set), 
    for k = 1:length(dset), 
    if strcmp(pset(k),set(d)), 
     t(h,p) = dset(k); 
     h = h+1; 
    end 
    end 
end 

PARFOR 루프 :

parfor d = 1:length(set), 
    for k = 1:length(dset), 
    if strcmp(pset(k),set(d)), 
     t(d) = dset(k); 
    end 
    end 
end 

답변

4

몇 점 ...

  1. 오타 : 당신이 변수를 사용한다 특정 당신이 있습니까 pset 또는 dset을 사용 하시겠습니까? 또한 정의되지 않은 변수 p이 첫 번째 루프 집합에 있습니다. 해야 루프의 첫 번째 세트의 코드는 다음?

    t(h) = dset(k); 
    h = h+1; 
    
  2. 당신은 루프의 각 세트 내에서 같은 일을하고 있지 않습니다 읽어 보시기 바랍니다. 다음 라인을 교체해 보셨습니까?

    t(d) = dset(k); 
    

    위의 두 줄을 사용 했습니까?

  3. ISMEMBER 함수를 사용하여 이러한 루프 집합 각각을 벡터화 된 솔루션으로 대체 할 수 있습니다. PSET 실제로 DSET 할 필요가있는 경우,

    t = dset(ismember(pset,set)); 
    

    나 : 위의 코드를 기반으로, 나는이 같은 일을 수행한다고 생각 또한

    t = dset(ismember(dset,set)); 
    

    , 그것은 좋지 않다 당신의 변수 중 하나의 이름을 으로 설정하는 아이디어는 이미 SET이라는 내장 기능이 있기 때문에으로 설정하십시오.

관련 문제