Just in case anyone else has a similar problem, I found an even simpler solution.
y = [2; 4; 1; 8];
yMat = 1:10 == y;
which produces a logical array yMat.
You can get numeric values by doing:
yMat = double(1:10 == y);
producing
yMat =
     0     1     0     0     0     0     0     0     0     0
     0     0     0     1     0     0     0     0     0     0
     1     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     1     0     0