How I can combine vectors in matrix

1 visualizzazione (ultimi 30 giorni)
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 [614x1] vector.
P is [12x12] 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 [614x12] one matrix.
How can I do that? it very urgent.

Risposta accettata

James Tursa
James Tursa il 22 Mag 2015
Modificato: James Tursa il 22 Mag 2015
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,:);
  3 Commenti
James Tursa
James Tursa il 22 Mag 2015
Modificato: James Tursa il 22 Mag 2015
Did you replace the D=p*P line with D(i,:)=p*P? And put a semi-colon at the end of the line to suppress the screen output?
Akvile Dumbliauskaite
Akvile Dumbliauskaite il 22 Mag 2015
Oh sorry, it gives a good answer :) Thank you :)

Accedi per commentare.

Più risposte (0)

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by