Main Content

repmat

Wiederholen von Kopien eines Arrays

Beschreibung

Beispiel

B = repmat(A,n) gibt ein Array zurück, das n Kopien von A in den Zeilen- und Spaltendimensionen enthält. Die Größe von B ist size(A)*n, wenn A eine Matrix ist.

Beispiel

B = repmat(A,r1,...,rN) gibt eine Liste von Skalaren an, r1,..,rN, die beschreibt, wie Kopien von A in jeder Dimension angeordnet sind. Wenn A N Dimensionen hat, ist die Größe von B size(A).*[r1...rN]. Beispielsweise gibt repmat([1 2; 3 4],2,3) eine 4x6-Matrix zurück.

Beispiel

B = repmat(A,r) gibt das Wiederholungsschema mit dem Zeilenvektor r an. Beispielsweise gibt repmat(A,[2 3]) dasselbe Ergebnis zurück wie repmat(A,2,3).

Beispiele

alle reduzieren

Erstellen Sie eine 3x2-Matrix, deren Elemente den Wert 10 enthalten.

A = repmat(10,3,2)
A = 3×2

    10    10
    10    10
    10    10

Wiederholen Sie Kopien einer Matrix in einer 2x2-Blockanordnung.

A = diag([100 200 300])
A = 3×3

   100     0     0
     0   200     0
     0     0   300

B = repmat(A,2)
B = 6×6

   100     0     0   100     0     0
     0   200     0     0   200     0
     0     0   300     0     0   300
   100     0     0   100     0     0
     0   200     0     0   200     0
     0     0   300     0     0   300

Wiederholen Sie Kopien einer Matrix in einer 2x3-Blockanordnung.

A = diag([100 200 300])
A = 3×3

   100     0     0
     0   200     0
     0     0   300

B = repmat(A,2,3)
B = 6×9

   100     0     0   100     0     0   100     0     0
     0   200     0     0   200     0     0   200     0
     0     0   300     0     0   300     0     0   300
   100     0     0   100     0     0   100     0     0
     0   200     0     0   200     0     0   200     0
     0     0   300     0     0   300     0     0   300

Wiederholen Sie Kopien einer Matrix in einer 2x3x2-Blockanordnung.

A = [1 2; 3 4]
A = 2×2

     1     2
     3     4

B = repmat(A,[2 3 2])
B = 
B(:,:,1) =

     1     2     1     2     1     2
     3     4     3     4     3     4
     1     2     1     2     1     2
     3     4     3     4     3     4


B(:,:,2) =

     1     2     1     2     1     2
     3     4     3     4     3     4
     1     2     1     2     1     2
     3     4     3     4     3     4

Stapeln Sie einen Zeilenvektor vier Mal vertikal.

A = 1:4;
B = repmat(A,4,1)
B = 4×4

     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4

Stapeln Sie einen Spaltenvektor vier Mal horizontal.

A = (1:3)';  
B = repmat(A,1,4)
B = 3×4

     1     1     1     1
     2     2     2     2
     3     3     3     3

Erstellen Sie eine Tabelle mit den Variablen Age und Height.

A = table([39; 26],[70; 63],'VariableNames',{'Age' 'Height'})
A=2×2 table
    Age    Height
    ___    ______

    39       70  
    26       63  

Wiederholen Sie Kopien der Tabelle in einem 2x3-Blockformat.

B = repmat(A,2,3)
B=4×6 table
    Age    Height    Age_1    Height_1    Age_2    Height_2
    ___    ______    _____    ________    _____    ________

    39       70       39         70        39         70   
    26       63       26         63        26         63   
    39       70       39         70        39         70   
    26       63       26         63        26         63   

repmat wiederholt die Eingaben der Tabelle und hängt eine Zahl an die neuen Variablennamen an.

Erstellen Sie zwei Spaltenvektoren.

A = [1; 3; 5];
B = [2; 4];

Generieren Sie alle Elementkombinationen der beiden Vektoren mithilfe von repelem und repmat. Jede Zeile der Ausgabe T ist eine Kombination mit dem ersten Element aus dem ersten Vektor und dem zweiten Element aus dem zweiten Vektor. Dieser Befehl ist äquivalent zum Ermitteln des kartesischen Produkts zweier Vektoren.

T = [repelem(A,numel(B)) repmat(B,numel(A),1)]
T = 6×2

     1     2
     1     4
     3     2
     3     4
     5     2
     5     4

In Releases ab R2023a können Sie auch die Funktion combinations verwenden, um alle Elementkombinationen zweier Vektoren zu generieren.

T = combinations(A,B)
T=6×2 table
    A    B
    _    _

    1    2
    1    4
    3    2
    3    4
    5    2
    5    4

Eingabeargumente

alle reduzieren

Eingabearray (Input Array), angegeben als Skalar, Vektor, Matrix oder mehrdimensionales Array.

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | datetime | duration | calendarDuration | categorical | cell
Unterstützung komplexer Zahlen: Ja

Anzahl der Wiederholungen eines Input Array in Zeilen- und Spaltendimensionen, angegeben als ganzzahliger Wert. Wenn n 0 oder negativ ist, dann ist das Ergebnis ein leeres Array.

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Wiederholungsfaktoren für jede Dimension, angegeben als separate Argumente ganzzahliger Werte. Wenn ein beliebiger Wiederholungsfaktor 0 oder negativ ist, dann ist das Ergebnis ein leeres Array.

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Vektor von Wiederholungsfaktoren für jede Dimension, angegeben als Zeilenvektor ganzzahliger Werte. Wenn ein beliebiger Wert in r 0 oder negativ ist, dann ist das Ergebnis ein leeres Array.

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Tipps

  • Zum Erstellen von Block-Arrays durch Bilden des Tensor-Produkts der Eingabe mit einem aus Einsen bestehenden Array verwenden Sie kron. Um beispielsweise den Zeilenvektor A = 1:3 vier Mal vertikal zu stapeln, können Sie B = kron(A,ones(4,1)) verwenden.

  • Zum Erstellen von Block-Arrays und Ausführen einer binären Operation in einem einzigen Durchgang verwenden Sie bsxfun. In einigen Fällen stellt bsxfun eine einfachere Lösung mit einer effizienteren Speichernutzung zur Verfügung. Um beispielsweise die Vektoren A = 1:5 und B = (1:10)' hinzuzufügen und damit ein 10x5-Array zu erstellen, verwenden Sie bsxfun(@plus,A,B) anstelle von repmat(A,10,1) + repmat(B,1,5).

  • Wenn A ein Skalar eines bestimmten Typs ist, können Sie andere Funktionen verwenden, um dasselbe Ergebnis zu erhalten wie repmat.

    repmat-SyntaxÄquivalente Alternative
    repmat(NaN,m,n)NaN(m,n)
    repmat(single(inf),m,n)inf(m,n,'single')
    repmat(int8(0),m,n)zeros(m,n,'int8')
    repmat(uint32(1),m,n)ones(m,n,'uint32')
    repmat(eps,m,n)eps(ones(m,n))

Erweiterte Fähigkeiten

HDL-Codegenerierung
Generieren von VHDL, Verilog und SystemVerilog Code für FPGA- und ASIC-Designs mit HDL Coder™.

Versionsverlauf

Eingeführt vor R2006a

alle erweitern