web-dev-qa-db-fra.com

Octave / Matlab: étendre un vecteur pour qu'il se répète?

Existe-t-il un moyen d'étendre un vecteur en le faisant se répéter?

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

Alors la v10 serait:

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

Cela devrait fonctionner pour le cas général, pas seulement pour [1 2]

89
Tom

La fonction que vous recherchez est repmat() .

v10 = repmat(v, 1, 5)
137
Andrew Shepherd

De toute évidence, repmat est la voie à suivre si vous savez dans quelle direction vous souhaitez étendre le vecteur.

Cependant, si vous voulez une solution générale qui répète toujours le vecteur dans la direction la plus longue, cette combinaison de repmat et d'indexation devrait faire l'affaire:

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