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]


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))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.