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]


person Tom    schedule 17.03.2010    source источник
comment
Вы можете использовать kron - оператор продукта Kroencker. например v=[1 2] и v100=kron(ones(1,100),v) - вектор v100=[v v ... v] (100 раз). Если вы хотите объединить некоторый вектор-столбец y с самим собой K раз, используйте yK=kron(ones(K,1),y).   -  person Pantelis Sopasakis    schedule 26.05.2013


Ответы (2)



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

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

 v10=v(repmat(1:length(v),1,5))
person Dennis Jaheruddin    schedule 23.04.2013