Octave/Matlab: удлинить вектор, чтобы он повторялся?

Есть ли способ расширить вектор, сделав его повторяющимся?

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

Тогда v10 будет:

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

Это должно работать в общем случае не только для [1 2]

Ответ 1

Функция, которую вы ищете, repmat().

v10 = repmat(v, 1, 5)

Ответ 2

Очевидно, что repmat - это путь, если вы знаете, в каком направлении вы хотите развернуть вектор.

Однако, если вы хотите, чтобы общее решение всегда повторяло вектор в самом длинном направлении, эта комбинация repmat и индексации должна делать трюк:

 v10=v(repmat(1:length(v),1,5))