Octave / Matlab: Bir vektörü uzatarak kendisini tekrar eder mi?


93

Bir vektörü, kendisini tekrar ettirerek genişletmenin bir yolu var mı?

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

O zaman v10 şöyle olur:

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

Bu sadece [1 2] için değil, genel durum için çalışmalıdır


Kron'u kullanabilirsiniz - Kroencker ürün operatörü. örneğin v=[1 2]ve v100=kron(ones(1,100),v)vektördür v100=[v v ... v](100 kez). Bazı sütun vektörlerini ykendi Kzamanlarıyla birleştirmek istiyorsanız , kullanın yK=kron(ones(K,1),y).
Pantelis Sopasakis

Yanıtlar:



6

Açıktır ki, vektörü hangi yönde genişletmek istediğinizi biliyorsanız, repmat gitmenin yoludur.

Bununla birlikte, vektörü her zaman en uzun yönde tekrarlayan genel bir çözüm istiyorsanız, bu repmat ve indeksleme kombinasyonu hile yapmalıdır:

 v10=v(repmat(1:length(v),1,5))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.