Octave / Matlab: Estendere un vettore che lo rende ripete?
Domanda
C'è un modo per estendere un vettore, rendendo ripete?
>v = [1 2];
>v10 = v x 5; %x represents some function. Something like "1 2" x 5 in perl
Poi v10 potrebbe essere:
>v10
1 2 1 2 1 2 1 2 1 2
Questo dovrebbe funzionare per il caso generale, non solo per [1 2]
Soluzione
La funzione che stai cercando è repmat()
.
v10 = repmat(v, 1, 5)
Altri suggerimenti
Ovviamente repmat è la strada da percorrere se si sa in quale direzione si desidera espandere il vettore.
Tuttavia, se si desidera una soluzione generale che si ripete 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))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow