Matlab - concatenar dos vectores de forma alterna

 
Vista:

concatenar dos vectores de forma alterna

Publicado por Roberto (3 intervenciones) el 27/08/2015 18:46:19
Buenas tardes.

Supongamos que tengo un vector datos=[x1,x2,x3] y quiero obtener el vector datos2=[x1,x1,x2,x2,x3,x3]. Me puede decir como proceder??

Una vez hecho eso quiero partir el vector (datos2) tomando valores de 2 en dos y repitiendo el primero con lo que obtendria una lista de valores de tal forma:

Si datos2=[x1,x1,x2,x2,x3,x3]

Quiero obtener una lista de vectores de la siguiente forma:

[x1,x1] [x1,x2] [x2,x2] [x2,x3] [x3,x3]

Me podria indicar como hacerlo??
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

concatenar dos vectores de forma alterna

Publicado por Royeth (1818 intervenciones) el 27/08/2015 19:00:30
Hola Roberto , este puede ser una forma :

1
2
3
4
5
6
7
8
9
datos=[1 2 3];
datos2=[];
for k=1:length(datos)
datos2=horzcat(datos2,repmat(datos(k),1,2));
end
for k=1:length(datos2)-1
lista(k,:)=[datos2(k) datos2(k+1)];
end
disp(lista)

un saludo
https://www.facebook.com/royethmatlab/
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

concatenar dos vectores de forma alterna

Publicado por Roberto (3 intervenciones) el 27/08/2015 19:51:56
Muchas gracias por la respuesta. con esa function no estaba familiarizado y la verdad es que con el trabajo de los vectores ( se que es basico en matlab) no me desenvuelvo muy bien.

He realizado sus pasos y he visto que si bien da perfectamente el resultado que pregunte, no me sirve puesto que no puedo graficar cada pareja de vectores como [x,y].

Tendria que crear 2 vectores a partir de el vector datos2 de la siguiente manera:

x=[x1,x1,x2,x2,x3] --> que coja para k=1 hasta k=length-1
y=[x1,x2,x2,x3,x3] --> que coja para k+1 hasta k=length

He probado cambiando el codigo para hacer lo que le comento, pero no me crea un vector x e y , sino que me devuelve x=3 e y =3.
Como consigo que me liste todo el vector?

datos=[1 2 3];
datos2=[];
for k=1:length(datos)
datos2=horzcat(datos2,repmat(datos(k),1,2));
end
for k=1:length(datos2)-1
x=[datos2(k)];
end
for k=2:length(datos2)
y=[datos2(k)];
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

concatenar dos vectores de forma alterna

Publicado por Roberto (3 intervenciones) el 27/08/2015 21:44:39
MUCHAS GRACIAS Y PERDON POR LA CONFUSION
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar