parfor. Error: The variable eavg in a parfor cannot be classified.

조회 수: 1 (최근 30일)
I have already read other topic on Errors and parfor but i don't find the answer to my problem.
My code give me an Error: "Error: The variable eavg in a parfor cannot be classified."
The pice of code with parfor is:
eavg = zeros(size(coeff_d,2),size(coeff_c,2),size(f,1));
parfor i0 = 1:size(vett,2)
i1 = vett(1,i0);
i2 = vett(2,i0);
i3 = vett(3,i0);
if curva~=2
if curva==4
z_rel = (i3-1)/(size(y,1)-1);
newcoeff = (-1.817*(z_rel)^2+2.776*z_rel)*0.7;
else
newcoeff = coeff_c(i2);
end
suptemp = EsponenzialeSingola(y(i3,:), f(i3,:),...
coeff_d(i1), newcoeff, plottacurve);
else
eavg(i1,i2,i3) = EsponenzialeDoppia(y(i3,:), f(i3,:),...
coeff_d(i1), coeff_c(i2), plottacurve);
end
end
the variables coeff_c, coeff_d, f, coeff_c, vett, curva, y and plottacurva are declared befor parfor-loop.
Can you help e to fix the Error?

채택된 답변

Mohammad Abouali
Mohammad Abouali 2014년 12월 2일
your parfor is based on i0 eavg is not being sliced by that.
So it doesn't know how to slice eavg and then once it comes out of parfor it doesn't know how to combins it.

추가 답변 (1개)

Marco Castelli
Marco Castelli 2014년 12월 3일
편집: Marco Castelli 2014년 12월 3일
@Mohammad Abouali : Thanks to you help I solve the problem in this way:
parfor i0 = 1:size(vett,2)
if curva~=2
if curva==4
z_rel = (vett(3,i0)-1)/(size(y,1)-1);
newcoeff = (-1.817*(z_rel)^2+2.776*z_rel)*0.7;
else
newcoeff = coeff_c(vett(2,i0));
end
eavg(i0) = EsponenzialeSingola(y(vett(3,i0),:), f(vett(3,i0),:),...
coeff_d(vett(1,i0)), newcoeff, plottacurve);
else
eavg(i0) = EsponenzialeDoppia(y(vett(3,i0),:), f(vett(3,i0),:),...
coeff_d(vett(1,i0)), coeff_c(vett(2,i0)), plottacurve);
end
end

카테고리

Help CenterFile Exchange에서 Parallel for-Loops (parfor)에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by