Octave / Matlab: Erweitern Sie einen Vektor, damit er sich wiederholt?


93

Gibt es eine Möglichkeit, einen Vektor zu erweitern, indem er sich wiederholt?

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

Dann wäre v10:

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

Dies sollte für den allgemeinen Fall funktionieren, nicht nur für [1 2]


Sie können kron - The Kroencker product operator verwenden. zB v=[1 2]und v100=kron(ones(1,100),v)ist der Vektor v100=[v v ... v](100 mal). Wenn Sie einen Spaltenvektor ymit sich selbst Kmal verketten möchten , verwenden Sie yK=kron(ones(K,1),y).
Pantelis Sopasakis

Antworten:



6

Offensichtlich ist repmat der richtige Weg, wenn Sie wissen, in welche Richtung Sie den Vektor erweitern möchten.

Wenn Sie jedoch eine allgemeine Lösung wünschen, die den Vektor immer in der längsten Richtung wiederholt, sollte diese Kombination aus Repmat und Indizierung den Trick tun:

 v10=v(repmat(1:length(v),1,5))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.