You are assigning 3 values, l(i),sig2(j),sigf2(k), into one value at par(i, j, k), which is not possible.
But you don't really need this, since you know what values were used. If you want this, change par into a cell array instead, and do:
The broadcast variable warning is simply warning you that a constant vector is being passed to every worker every time, hence could be slow (especially if they're large matrices). In your case, sig2 and sigf2 are pretty small, so don't worry about this too much. This warning appears when you are accessing a small segment of a vector per loop. Notice that Xtrain and ytrain are not give you warning, because parfor knows these are broadcast variables (you aren't accessing " Xtrain(j)", but rather the full Xtrain vector).
To suppress these warnings, you could explicitly tell Matlab these are broadcast variables via another temporary variable like this:
sig2Temp = sig2;
sigf2Temp = sigf2;