matlab - teclado - Guardar datos de bucle en vector
posicion de un vector en matlab (2)
Esta es una respuesta relativamente simple, necesita crear una matriz para almacenar sus datos. Simplemente agrego el value = zeros(1,length(xx))
línea value = zeros(1,length(xx))
. Esto crea una matriz pre asignada de 0 que luego se sobrescribe en el ciclo ( value(jj) = ##
) para guardar los valores.
x=[1 2 3 4 5];
y=[1 2 3 4 5];
xx=[1.2 1.6 1.8 2.4 2.8 3.4 4.9 2.6];
yy=[1.2 1.6 1.8 2.5 2.8 3.3 4.9 2.5];
plot(x,y,''.g'',xx,yy,''*b'')
value = zeros(1,length(xx));
for jj=1:length(xx)
if xx(jj)<x(1)
value(jj)=0;
elseif xx(jj) > x(1) && xx(jj) < x(2)
value(jj)=1;
elseif xx(jj) > x(2) && xx(jj) < x(3)
value(jj)=2;
elseif xx(jj) > x(3) && xx(jj) < x(4)
value(jj)=3;
elseif xx(jj) > x(4) && xx(jj) < x(5)
value(jj)=4;
elseif xx(jj) > x(5) && xx(jj) < x(6)
value(jj)=5;
else
value(jj)= NaN;
end
end
cuando ejecuto mi script, se muestran todos los valores, pero quiero todos los valores en vector, entonces, ¿qué puedo hacer?
x=[1 2 3 4 5];
y=[1 2 3 4 5];
xx=[1.2 1.6 1.8 2.4 2.8 3.4 4.9 2.6];
yy=[1.2 1.6 1.8 2.5 2.8 3.3 4.9 2.5];
plot(x,y,''.g'',xx,yy,''*b'')
for j=1:length(xx)
if xx(j)<x(1)
value=0
elseif xx(j) >x(1) & xx(j)<x(2)
value=1
elseif xx(j) >x(2) & xx(j)<x(3)
value=2
elseif xx(j) >x(3) & xx(j)<x(4)
value=3
elseif xx(j) >x(4) & xx(j)<x(5)
value=4
elseif xx(j) >x(5) & xx(j)<x(6)
value=5
else
value= NaN
end
end
Tendrá que crear una matriz antes del ciclo for, inicializado con ceros como este:
value = zeros(1,length(xx));
Este vector se actualizará dentro del ciclo. Inicializarlo con ceros garantizará que no necesitará asignación de memoria para cada iteración. Su tamaño es el mismo número de iteraciones del ciclo, ya que este es el número final de valores que utiliza.
Y luego, después de cada valor dentro del ciclo, escriba a (j). Esto guardará el valor actual en la posición actual en el vector de valor en cada iteración;
Después del bucle, escriba el valor e imprimirá el valor como un vector.