Есть ли способ расширить вектор, сделав его повторяющимся?
>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]
Функция, которую вы ищете, repmat()
.
v10 = repmat(v, 1, 5)
Очевидно, что repmat - это путь, если вы знаете, в каком направлении вы хотите развернуть вектор.
Однако, если вы хотите, чтобы общее решение всегда повторяло вектор в самом длинном направлении, эта комбинация repmat и индексации должна делать трюк:
v10=v(repmat(1:length(v),1,5))
v=[1 2]
иv100=kron(ones(1,100),v)
- это векторv100=[vv ... v]
(100 раз). Если вы хотите объединить некоторый вектор-столбецy
с собойK
раз, используйтеyK=kron(ones(K,1),y)
.