Oktaf / Matlab: Perpanjang vektor sehingga terulang?

93

Apakah ada cara untuk memperpanjang vektor dengan membuatnya berulang?

>v = [1 2];
>v10 = v x 5; %x represents some function. Something like "1 2" x 5 in perl

Maka v10 akan menjadi:

>v10
     1 2 1 2 1 2 1 2 1 2

Ini seharusnya berfungsi untuk kasus umum, bukan hanya untuk [1 2]

Tom
sumber
Anda dapat menggunakan kron - Operator produk Kroencker. misalnya v=[1 2]dan v100=kron(ones(1,100),v)adalah vektor v100=[v v ... v](100 kali). Jika Anda ingin menggabungkan beberapa kolom-vektor ydengan Kwaktu itu sendiri , gunakan yK=kron(ones(K,1),y).
Pantelis Sopasakis

Jawaban:

6

Jelas repmat adalah cara yang harus dilakukan jika Anda tahu ke arah mana Anda ingin memperluas vektor.

Namun, jika Anda menginginkan solusi umum yang selalu mengulang vektor dalam arah terpanjang, kombinasi repmat dan pengindeksan ini dapat membantu:

 v10=v(repmat(1:length(v),1,5))
Dennis Jaheruddin
sumber