MATLAB: How to combine vectors in matrix

for loopif statementloopsMATLABmatrixurgentvector

Hi, I have a problem. This is my program text.
for i=1:614
if (x1(i,1) == 0)
p=[1 0 0 0 0 0 0 0 0 0 0 0];
elseif ((x1(i,1) > 0) && (x1(i,1) <= 10000))
p=[0 1 0 0 0 0 0 0 0 0 0 0];
elseif ((x1(i,1) > 10000) && (x1(i,1) <= 20000))
p=[0 0 1 0 0 0 0 0 0 0 0 0];
elseif ((x1(i,1) > 20000) && (x1(i,1) <= 30000))
p=[0 0 0 1 0 0 0 0 0 0 0 0];
elseif ((x1(i,1) > 30000) && (x1(i,1) <= 40000))
p=[0 0 0 0 1 0 0 0 0 0 0 0];
elseif ((x1(i,1) > 40000) && (x1(i,1) <= 50000))
p=[0 0 0 0 0 1 0 0 0 0 0 0];
elseif ((x1(i,1) > 50000) && (x1(i,1) <= 60000))
p=[0 0 0 0 0 0 1 0 0 0 0 0];
elseif ((x1(i,1) > 60000) && (x1(i,1) <= 70000))
p=[0 0 0 0 0 0 0 1 0 0 0 0];
elseif ((x1(i,1) > 70000) && (x1(i,1) <= 80000))
p=[0 0 0 0 0 0 0 0 1 0 0 0];
elseif ((x1(i,1) > 80000) && (x1(i,1) <= 90000))
p=[0 0 0 0 0 0 0 0 0 1 0 0];
elseif ((x1(i,1) > 90000) && (x1(i,1) <= 100000))
p=[0 0 0 0 0 0 0 0 0 0 1 0];
elseif (x1(i,1) > 100000)
p=[0 0 0 0 0 0 0 0 0 0 0 1];
else
end
D=p*P
end
x1 is [614×1] vector.
P is [12×12] matrix.
So with this program my answer is vector D, given 614 times (because x1 have 614 elements). But I need that those vectors would be combine into [614×12] one matrix.
How can I do that? it very urgent.

Best Answer

Assuming none of the x1 values are negative, which from the looks of your code seems to be an assumption you made.
D = zeros(614,12);
for i=1:614
:
D(i,:) = p * P;
But it looks like you are simply picking off rows of P depending on the value of x1. This could be vectorized. E.g.,
x = ceil(x1/10000) + 1;
x(x>12) = 12;
D = P(x,:);