You should reorganize M
and T
in order to use them in a parallel loop. This should work:
M = M(index);
T = T(index);
parfor i=1:size(x,1)
if (ind(index(i)) == Index1)
para = lsqcurvefit(F, [M(i) T(i)], t, SS(ind(index(i)):end,i), ...
[0 0], [MaxiM(index(i)) maxT], options);
elseif (ind(index(i)) == Index2)
para = lsqcurvefit(F, [M(i) T(i)], t2, SS(ind(index(i)):end,i), ...
[0 0], [MaxiM(index(i)) maxT], options);
end
end
However, if you need return of function lsqcurvefit
- then I would agree with the comment by Kleist that your code is meaningless.
UPDATE:
You can try to do similar rearrangements to further increase performance:
M = M(index);
T = T(index);
ind = ind(index);
MaxiM = MaxiM(index);
parfor i=1:size(x,1)
if (ind(i) == Index1)
para = lsqcurvefit(F, [M(i) T(i)], t, SS(ind(i):end,i), ...
[0 0], [MaxiM(i) maxT], options);
elseif (ind(i) == Index2)
para = lsqcurvefit(F, [M(i) T(i)], t2, SS(ind(i):end,i), ...
[0 0], [MaxiM(i) maxT], options);
end
end