Октава / Matlab: Розширити вектор, щоб він повторився?


93

Чи є спосіб розширити вектор, змусивши його повторюватись?

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


Ви можете використовувати kron - оператор продукту Kroencker. наприклад v=[1 2]і v100=kron(ones(1,100),v)є вектором v100=[v v ... v](100 разів). Якщо ви хочете об'єднати деякий вектор-стовпець yіз самим собою K, скористайтесь yK=kron(ones(K,1),y).
Пантеліс Сопасакіс

Відповіді:



6

Очевидно, що репмат - це шлях, якщо ви знаєте, в якому напрямку ви хочете розширити вектор.

Однак, якщо ви хочете отримати загальне рішення, яке завжди повторює вектор у найдовшому напрямку, ця комбінація повторення та індексації повинна зробити трюк:

 v10=v(repmat(1:length(v),1,5))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.