Matlab - Proceso con datos no consecutivos

   
Vista:

Proceso con datos no consecutivos

Publicado por Juan (43 intervenciones) el 07/04/2011 11:11:11
Hola a todos, la siguiente pregunta no es muy normal así que intentaré explicarlo de una manera fácil y con un ejemplo sencillo (espero que sea así).

Tengo un vector X=[1 2 3 4 5 6 7 8]

me gustaría hacer la siguiente operación: Y=X(i+1)-X(i)

para ello programo y hago:
Y=[];
n=length(X);
for i=1:n-1
resta=X(i+1)-X(i);
Y=[Y;resta];
end

de esta manera, obtendría: Y=[2-1 3-2 4-3 5-4 6-5 7-6 8-7 ]=[1 1 1 1 1 1 1 ]

pero no quiero restar de manera consecutiva, quiero tener la resta de esta manera:

Y=[2-1 4-3 5-4 7-6 8-7]

¿Cómo se puede hacer esto?

Muchas gracias a quien me pueda echar una mano, la verdad es que este foro siempre tiene solución para todos. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dave

Proceso con datos no consecutivos

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 07/04/2011 13:17:33
Hola Juan;

Quizas una opción más sencilla sea que utilices lo siguiente;

>> X=[1 2 3 4 5 6 7 8]

X =
1 2 3 4 5 6 7 8

>> Y=[X(2:end)-X(1:end-1)]

Y =
1 1 1 1 1 1 1

>> Y= diff(X)

Y =
1 1 1 1 1 1 1

Saludos
Dave
correa.dave30@gmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Proceso con datos no consecutivos

Publicado por Joaquín (9 intervenciones) el 07/04/2011 13:19:15
¿No habrás querido decir al final Y=[2-1 4-3 6-5 8-7 ... ]? es que sino, no hay una sucesión recurrente y es un programa bastante largo, que no lo voy hacer.

Después, la operación que pides, está solo definida para vectores de dimensión PAR.

Una posible opción sería:

%%%%%%%%%%%%%%%%%%%%%%%%%%

clc;
clear;

n=input('Dimensión vector (debe ser par): ');
for i=1:n
fprintf('Por favor,introduzca la componente %g del vector',i)
X(i)=input(': ');
end

for i=1:0.5*n
par(i)=X(2*i);
end

for i=0:0.5*n-1
ip(i+1)=X(2*i+1);
end

Y=par-ip;
disp('El vector Y buscado es:')
disp(Y)

%%%%%%%%%%%%%%%%%%%%%%

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Proceso con datos no consecutivos

Publicado por Juan (43 intervenciones) el 07/04/2011 17:03:04
Hola Joaquín, tenías razón, el vector Y que tu has puesto es lo que quería, perdonáme. La solución que me has dado es la perfecta, muchísimas gracias por tu ayuda.

Dave también te quiero dar las gracias por tu ayuda. Un saludo a los dos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar