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