Czy istnieje sposób na wydłużenie wektora poprzez jego powtórzenie?
>v = [1 2];
>v10 = v x 5; %x represents some function. Something like "1 2" x 5 in perl
Wtedy wersja 10 wyglądałaby:
>v10
1 2 1 2 1 2 1 2 1 2
Powinno to działać w przypadku ogólnym, a nie tylko w przypadku [1 2]
v=[1 2]
iv100=kron(ones(1,100),v)
jest wektoremv100=[v v ... v]
(100 razy). Jeśli chcesz połączyć jakiś wektor kolumnowyy
ze sobąK
, użyjyK=kron(ones(K,1),y)
.Odpowiedzi:
Funkcja, której szukasz, to
repmat()
.v10 = repmat(v, 1, 5)
źródło
Oczywiście repmat jest drogą do zrobienia, jeśli wiesz, w którym kierunku chcesz rozszerzyć wektor.
Jeśli jednak chcesz uzyskać ogólne rozwiązanie, które zawsze powtarza wektor w najdłuższym kierunku, ta kombinacja repmat i indeksowania powinna załatwić sprawę:
v10=v(repmat(1:length(v),1,5))
źródło