Octave / Matlab: Mở rộng một vectơ khiến nó tự lặp lại?


93

Có cách nào để mở rộng một vectơ bằng cách làm cho nó lặp lại chính nó?

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

Sau đó v10 sẽ là:

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

Điều này sẽ hoạt động cho trường hợp chung, không chỉ cho [1 2]


Bạn có thể sử dụng kron - Nhà điều hành sản phẩm Kroencker. vd v=[1 2]v100=kron(ones(1,100),v)là vectơ v100=[v v ... v](100 lần). Nếu bạn muốn nối một số vectơ cột yvới Kthời gian của chính nó , hãy sử dụng yK=kron(ones(K,1),y).
Pantelis Sopasakis

Câu trả lời:



6

Rõ ràng là repmat là cách để đi nếu bạn biết bạn muốn mở rộng vector theo hướng nào.

Tuy nhiên, nếu bạn muốn có một giải pháp chung luôn lặp lại vectơ theo hướng dài nhất, thì sự kết hợp giữa lập chỉ mục và lập chỉ mục này sẽ thực hiện thủ thuật:

 v10=v(repmat(1:length(v),1,5))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.