Matlab - ampliar un vector

 
Vista:

ampliar un vector

Publicado por nazareno (14 intervenciones) el 01/08/2010 01:13:42
hola gentesss... tengo una duda q no logro resolver, he consultado todas las ayudas pero siempre me muestran la operación inversa de tomar parte de una matriz para construir un vector y yo busco algo asi como la operación inversa a eso.. explico:
digamos q tengo un vector a=1:1:5 q es:
a= 1 2 3 4 5
bien, ahora lo q yo quiero hacer es q se genere otro vector aa q tenga los mismos componentes de a pero repetidos dos veces, así:
aa= 1 2 3 4 5 1 2 3 4 5
esta muy claro q puedo definir aa=[a a], pero eso no me sirve porq lo q aca expongo con la repeticion dos veces del mismo vector a, en realidad lo voy a implementar con muchas mas repeticiones, digamos q no quiero definir aa=[a a a a ... a] 2500 veces, se entiende?

otra pregunta q esta relacionada con la anterior. supongan q tengo definido ese vector a= 1 2 3 4 5. ahora lo q quiero definir es otro vector bb q tenga repetido dos veces el primero, dos veces el segundo y asi..:
bb=1 1 2 2 3 3 4 4 5 5
tambien es claro q puedo definir bb=a(1) a(1) a(2) a(2) a(3) a(3) a(4) a(4) a(5) a(5) sin embargo resulta bastante mas tedioso q como definí aa. ahora si quisiera hacer bb, pero con 1000 valores??!!

bueno gente, dejo un abrazo
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

RE:ampliar un vector

Publicado por Jorge (226 intervenciones) el 01/08/2010 19:28:47
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
a = [1 2 3];
aa = [];
 
%numero de veces a repetir
n = 5;
 
for i = 1 : n
    aa = [aa a];
end
aa
 
%%%%%%%%%%%%%%
 
ib = 1;
for i = 1 : length(a)
    b(ib) = a(i);
    b(ib+1) = a(i);
    ib = ib + 2;
end
b
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

RE:ampliar un vector

Publicado por nazareno (14 intervenciones) el 01/08/2010 21:22:48
muchas gracias jorge.....
q pasa si el segundo caso, en vez de querer algo tipo:
bb=1 1 2 2 3 3
quisiera algo así:
bb=1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3
siguiendo tu código debería hacer algo así:

1
2
3
4
5
6
7
8
9
10
11
ib = 1;
for i = 1 : length(a)
b(ib) = a(i);
b(ib+1) = a(i);
b(ib+2) = a(i);
b(ib+3) = a(i);
b(ib+4) = a(i);
b(ib+5) = a(i);
ib = ib + 6;
end
b

el asunto es si tengo q hacer eso, pero en vez de repetirse 6 veces quiero q se repita 200 veces....

PD: perdón, pero esa fue la duda original, pero la plantee mal yo...
se les ocurre como tendría q escribirlo?
saludos
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

RE:ampliar un vector

Publicado por Jorge (226 intervenciones) el 02/08/2010 05:53:52
1
2
3
4
5
6
7
8
9
a = [1 2 3];
b = [];
n = 4; % numero a repetir de cada valor
 
for i = 1 : length(a)
    aa = repmat(a(i), 1, n);
    b = [b aa];
end
b
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

RE:ampliar un vector

Publicado por Julian Cuintaco (75 intervenciones) el 01/08/2010 20:11:04
Hola, para el primer caso puedes usar la siguiente función de Matlab:

a=[1 2 3 4 5];
n=5; % Veces que se repite el vector.
aa=repmat(a,1,n) % Visualiza vector replicado n veces.

En cuanto al siguiente caso, es necesario usar un bucle FOR y es muy recomendable antes de iniciar el bucle, definir el tamaño del vector resultante, en este caso bb, para que el código se ejecute más rápido, esto en caso de que el bucle sea de muchas iteraciones.

Saludos...
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

RE:ampliar un vector

Publicado por Sebastian Caicedo (2 intervenciones) el 22/05/2014 18:43:05
Para el primer caso esta muy buena la funcion de repmap.
Pero para el el segundo se puede hacer sin usar un ciclo for.
Así:

a=[1:5];
a=a(ones(2,1),:)
a=a(:)';
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