Main Content

repmat

Ripetere le copie dell'array

Descrizione

esempio

B = repmat(A,n) restituisce un array contenente n copie di A nelle dimensioni di riga e colonna. La grandezza di B è size(A)*n quando A è una matrice.

esempio

B = repmat(A,r1,...,rN) specifica un elenco di scalari r1,..,rN, che descrive come sono disposte le copie di A in ciascuna dimensione. Quando A ha le dimensioni di N, la grandezza di B è size(A).*[r1...rN]. Ad esempio, repmat([1 2; 3 4],2,3) restituisce una matrice 4x6.

esempio

B = repmat(A,r) specifica lo schema di ripetizione con il vettore riga r. Ad esempio, repmat(A,[2 3]) restituisce lo stesso risultato di repmat(A,2,3).

Esempi

comprimi tutto

Creare una matrice 3x2 i cui elementi contengano il valore 10.

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

    10    10
    10    10
    10    10

Ripetere le copie di una matrice in una disposizione a blocchi 2x2.

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

Ripetere le copie di una matrice in una disposizione a blocchi 2x3.

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

Ripetere le copie di una matrice in una disposizione a blocchi 2x3x2.

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

Impilare verticalmente un vettore riga per quattro volte.

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

Impilare orizzontalmente un vettore colonna per quattro volte.

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

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

Creare una tabella con le variabili Age e Height.

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

    39       70  
    26       63  

Ripetere le copie della tabella in un formato a blocchi 2x3.

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 ripete le voci della tabella e aggiunge un numero ai nuovi nomi delle variabili.

Creare due vettori colonna.

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

Generare tutte le combinazioni di elementi dei due vettori utilizzando repelem e repmat. Ciascuna riga dell'output T è una combinazione con il primo elemento proveniente dal primo vettore e il secondo elemento proveniente dal secondo vettore. Questo comando equivale a trovare il prodotto cartesiano di due vettori.

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

A partire dalla release R2023a, è inoltre possibile utilizzare la funzione combinations per generare tutte le combinazioni di elementi di due vettori.

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

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

Argomenti di input

comprimi tutto

Array di input, specificato come scalare, vettore, matrice o array multidimensionale.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | datetime | duration | calendarDuration | categorical | cell
Supporto numeri complessi:

Numero di volte in cui ripetere l'array di input nelle dimensioni di riga e colonna, specificato come valore intero. Se n è 0 o negativo, il risultato è un array vuoto.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Fattori di ripetizione per ciascuna dimensione, specificati come argomenti separati di valori interi. Se un qualsiasi fattore di ripetizione è 0 o negativo, il risultato è un array vuoto.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Vettore dei fattori di ripetizione per ciascuna dimensione, specificato come vettore riga di valori interi. Se un qualsiasi valore in r è 0 o negativo, il risultato è un array vuoto.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Suggerimenti

  • Per costruire array di blocchi formando il prodotto tensoriale dell'input con un array di uno, utilizzare kron. Ad esempio, per impilare il vettore riga A = 1:3 quattro volte verticalmente, si può utilizzare B = kron(A,ones(4,1)).

  • Per creare array di blocchi ed eseguire un'operazione binaria in un unico passaggio, utilizzare bsxfun. In alcuni casi, bsxfun fornisce una soluzione più semplice e più efficiente in termini di memoria. Ad esempio, per sommare i vettori A = 1:5 e B = (1:10)' per produrre un array 10x5, utilizzare bsxfun(@plus,A,B) anziché repmat(A,10,1) + repmat(B,1,5).

  • Quando A è uno scalare di un certo tipo, è possibile utilizzare altre funzioni per ottenere lo stesso risultato di repmat.

    Sintassi repmatAlternativa equivalente
    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))

Funzionalità estese

Generazione di codice HDL
Genera codice VHDL, Verilog e SystemVerilog per progetti FPGA e ASIC utilizzando HDL Coder™.

Cronologia versioni

Introduzione prima di R2006a

espandi tutto