2015-01-22 2 views
0

내가 오류 메시지가 아래의 코드를 실행하지만 얻으려고 분류 할 수 없습니다 그것을 해결하기 위해? matlab에의matlab에 중첩 parfor 루프, 변수는

R=zeros(M,N,Us,Vs,'single'); 
parfor indM=1:M 
    for indN=1:N 
     for indv=1:Vs   
      temp=squeeze(X(indM,indN,:,indv));   
      if(sum(temp(:)~=0)) 
      R(indM,indN,:,indv)= FractionalFFT_mid0(temp,a);  
      end 
     end 
    end 
end 
+0

@PavelOganesyan : 각 작업자가'(indM, :, :, :) 슬라이스에만 액세스하므로이 질문에 대한 중복이 표시되지 않습니다. – Daniel

+0

@PavelOganesyan - 올바른 복제본이 아닙니다. 다니엘에 의한 것이 올바른 것인데, 나는 그것을 최종 복제물로 선택했다. – rayryeng

+0

@rayryeng : 다른 질문은 중복 된 것으로 보지 않습니다. 여기서 우리는 마지막 치수를 따라 자르지 않는 아주 단순한 경우를 가지고있는 반면, 다른 속보는 더 복잡한 문제에 관한 것입니다. 결과적으로 나는 그 질문을 재개했다. – Jonas

답변

1

이전 버전은 parfor 분할 인덱스가 마지막이라고 요구 (최신 버전은, 예를 들어, 2014b 더 이상 요구 사항이 있습니다).

R=zeros(N,Us,Vs,M,'single'); 
parfor indM=1:M 
    for indN=1:N 
     for indv=1:Vs   
      temp=squeeze(X(indM,indN,:,indv));   
      if(sum(temp(:)~=0)) 
      R(indN,:,indv,indM)= FractionalFFT_mid0(temp,a);  
      end 
     end 
    end 
end 

%# get R back the way you wanted originally 
R = permute(R,[4 1 2 3]); 
+0

감사합니다, 고마워요! – user1112136

+0

흠, 나는 그런 요구 사항이 없었던 것 같아 - 방금 R2007b (대부분 현재 형태의'parfor '를 가진 첫 번째 버전 - R2007a와 이전 버전은 완전히 다른 parfor를 가졌다 ...) , 그리고 다음과 같이 :'x = 0 (4); parfor (idx = 1 : 4), x (idx, 1) = 7, end'이 예상대로 작동했습니다. 확실히 중첩 된 FOR 루프의 측면에서 지원되는 부분이 약간 변경되었습니다. – Edric

+0

그런데, 나는 왜 subscript를 다시 주문하는 것이 그 일을하게되는지 모른다. – Edric