2014-10-02 2 views
0

나는 일반적으로 parfor으로 MATLAB 코드의 for을 대체하지만 2 차원 매트릭스는 모두 작동하지 않습니다.MATLAB parfor 순환에서 행렬을 출력하는 방법은 무엇입니까?

코드

parfor k=1 : n 
sonic = data1((1+(k-1)*2400):(2400*k)); 
signal1 = (sonic(1:2400))./100; 
Ar = abs(fftshift(fft(signal1,2400))); 
[maxb,ind] = max(b); 
Tp(k) = 2*pi/x(ind); 
E = @(x)(x^2+1); 
for i=1:length(x2) 
    Ex(i,k) = E(x2(i)); 
    Exm0(i,k) = Ex(i,k)-m0(k); 
    signal2(i) = Exm0(i,k); 
end 
epsilong(:,k) = Ar; 
end 

만 같은 Tp(k) 같은 변수가 작업 공간에 표시; Ex(i,k)과 같은 2 차원 행렬이 작동하지 않았습니다.

답변

0

PARFOR 루프 내에 중첩 된 FOR 루프의 제한 사항은 here입니다.이 경우 문제는 루프 경계 인 1:length(x2)입니다. 해당 페이지에 설명 된대로 다음과 같이이 문제를 해결할 수 있습니다.

len_x2 = length(x2); 
parfor k = 1:n 
    ... 
    for i = 1:len_x2 
     ... 
    end 
end 
+0

도움 주셔서 감사합니다. 루프 경계에 관해서는, PARFOR에 대한 MATLAB 문서는 [link] (http://www.mathworks.cn/cn/help/distcomp/parfor.html)로 기술되어 있는데, parfor i = 1 : length (A) B (i) = f (A (i)); 끝. 행렬 문제를 풀기 위해서, 저는 루프 밖에서 행렬을 정의해야한다고 생각합니다. 그러나 문제는 루프에서 변수를 전달하는 방법입니다. – Garbiel

관련 문제