Octave / 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)
Pantelis Sopasakis

คำตอบ:



6

เห็นได้ชัดว่า repmat เป็นวิธีที่จะไปหากคุณรู้ว่าคุณต้องการขยายเวกเตอร์ไปในทิศทางใด

อย่างไรก็ตามหากคุณต้องการวิธีแก้ปัญหาทั่วไปที่ให้เวกเตอร์ซ้ำในทิศทางที่ยาวที่สุดเสมอการรวมกันของ repmat และการจัดทำดัชนีนี้ควรใช้เคล็ดลับ

 v10=v(repmat(1:length(v),1,5))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.