Octave / Matlab: estendi un vettore facendolo ripetere?


93

C'è un modo per estendere un vettore facendolo ripetere?

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

Quindi la v10 sarebbe:

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

Questo dovrebbe funzionare per il caso generale, non solo per [1 2]


Puoi utilizzare kron, l'operatore del prodotto Kroencker. ad esempio v=[1 2]ed v100=kron(ones(1,100),v)è il vettore v100=[v v ... v](100 volte). Se vuoi concatenare un vettore colonna ycon se stesso Kvolte, usa yK=kron(ones(K,1),y).
Pantelis Sopasakis

Risposte:



6

Ovviamente repmat è la strada da percorrere se sai in quale direzione vuoi espandere il vettore.

Tuttavia, se vuoi una soluzione generale che ripeta sempre il vettore nella direzione più lunga, questa combinazione di repmat e indicizzazione dovrebbe fare il trucco:

 v10=v(repmat(1:length(v),1,5))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.