Octave / Matlab: ¿Extiende un vector para que se repita?

93

¿Hay alguna forma de extender un vector haciéndolo repetirse?

>v = [1 2];
>v10 = v x 5; %x represents some function. Something like "1 2" x 5 in perl

Entonces v10 sería:

>v10
     1 2 1 2 1 2 1 2 1 2

Esto debería funcionar para el caso general, no solo para [1 2]

Tom
fuente
Puede utilizar kron, el operador de productos de Kroencker. por ejemplo, v=[1 2]y v100=kron(ones(1,100),v)es el vector v100=[v v ... v](100 veces). Si desea concatenar algún vector de columna yconsigo mismo Ktiempos, use yK=kron(ones(K,1),y).
Pantelis Sopasakis

Respuestas:

6

Obviamente, repmat es el camino a seguir si sabe en qué dirección desea expandir el vector.

Sin embargo, si desea una solución general que siempre repita el vector en la dirección más larga, esta combinación de repmat e indexación debería funcionar:

 v10=v(repmat(1:length(v),1,5))
Dennis Jaheruddin
fuente