Октава / Матлаб: Расширить вектор, чтобы он повторялся? - PullRequest
87 голосов
/ 17 марта 2010

Есть ли способ расширить вектор, заставив его повторяться?

>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]

Ответы [ 2 ]

136 голосов
/ 17 марта 2010

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

v10 = repmat(v, 1, 5)
6 голосов
/ 23 апреля 2013

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

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

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