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

1 Ansicht (letzte 30 Tage)
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?

Akzeptierte Antwort

Mohammad Abouali
Mohammad Abouali am 2 Dez. 2014
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.

Weitere Antworten (1)

Marco Castelli
Marco Castelli am 3 Dez. 2014
Bearbeitet: Marco Castelli am 3 Dez. 2014
@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

Kategorien

Mehr zu Parallel for-Loops (parfor) finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by