Октава / Матлаб: Расширить вектор, чтобы он повторялся?

82

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

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

  • 0
    Вы можете использовать kron - оператор продукта Kroencker. например, v=[1 2] и v100=kron(ones(1,100),v) - это вектор v100=[vv ... v] (100 раз). Если вы хотите объединить некоторый вектор-столбец y с собой K раз, используйте yK=kron(ones(K,1),y) .
Теги:
vector
octave

2 ответа

125
Лучший ответ

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

v10 = repmat(v, 1, 5)
6

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню