Main Content

repmat

Répéter les copies de tableau

Description

exemple

B = repmat(A,n) renvoie un tableau contenant n copies de A dans les dimensions de ligne et de colonne. La taille de B est size(A)*n lorsque A est un tableau.

exemple

B = repmat(A,r1,...,rN) spécifie une liste de scalaires r1,..,rN, qui décrit comment la façon dont les copies de A sont disposées dans chaque dimension. Lorsque A comporte N dimensions, la taille de B est size(A).*[r1...rN]. Par exemple, repmat([1 2; 3 4],2,3) renvoie un tableau de dimension 4 x 6.

exemple

B = repmat(A,r) spécifie le schéma de répétition avec le vecteur ligne r. Par exemple, repmat(A,[2 3]) renvoie le même résultat que repmat(A,2,3).

Exemples

réduire tout

Créez une matrice 3 x 2 dont les éléments contiennent la valeur 10.

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

    10    10
    10    10
    10    10

Répétez les copies d’une matrice dans une disposition de blocs de dimension 2 x 2.

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

Répétez les copies d’une matrice dans une disposition de blocs de dimension 2 x 3.

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

Répétez les copies d’une matrice dans une disposition de blocs de dimension 2 x 3 x 2.

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

Empilez verticalement un vecteur ligne à quatre reprises.

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

Empilez horizontalement un vecteur colonne à quatre reprises.

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

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

Créez une table avec les variables Age et Height.

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

    39       70  
    26       63  

Répétez les copies de la table dans un format de blocs de dimension 2 x 3.

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 répète les entrées de la table et ajoute un numéro aux nouveaux noms de variables.

Créez deux vecteurs colonne.

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

Générez toutes les combinaisons d’éléments des deux vecteurs en utilisant repelem et repmat. Chaque ligne de la sortie T est une combinaison du premier élément provenant du premier vecteur et du deuxième élément provenant du deuxième vecteur. Cette commande équivaut à rechercher le produit cartésien de deux vecteurs.

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

Depuis la version R2023a, vous pouvez également utiliser la fonction combinations pour générer toutes les combinaisons d’éléments de deux vecteurs.

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

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

Arguments d'entrée

réduire tout

Tableau en entrée, spécifié sous forme de scalaire, de vecteur, de matrice ou de tableau multidimensionnel.

Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | datetime | duration | calendarDuration | categorical | cell
Support des nombres complexes : Oui

Nombre de répétitions du tableau en entrée dans les dimensions de ligne et de colonne, spécifié sous forme d’une valeur entière. Si n est égal à 0 ou négatif, le résultat est un tableau vide.

Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Facteurs de répétition pour chaque dimension, spécifiés sous forme d’arguments distincts de valeurs entières. Si l’un des facteurs de répétition est égal à 0 ou négatif, le résultat est un tableau vide.

Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Vecteur des facteurs de répétition pour chaque dimension, spécifié sous forme de vecteur ligne de valeurs entières. Si l’une des valeurs de r est égale à 0 ou négative, le résultat est un tableau vide.

Types de données : single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Conseils

  • Pour construire des block arrays en formant le produit tensoriel de l’entrée avec un tableau de uns, utilisez kron. Par exemple, pour empiler quatre fois verticalement le vecteur ligne A = 1:3, vous pouvez utiliser B = kron(A,ones(4,1)).

  • Pour créer des block arrays et effectuer une opération binaire en une seule fois, utilisez bsxfun. Dans certains cas, bsxfun offre une solution plus simple et plus efficace en termes de mémoire. Par exemple, pour additionner les vecteurs A = 1:5 et B = (1:10)' afin de produire un tableau de dimension 10 x 5, utilisez bsxfun(@plus,A,B) plutôt que repmat(A,10,1) + repmat(B,1,5).

  • Lorsque A est un scalaire d’un certain type, vous pouvez utiliser d’autres fonctions pour obtenir le même résultat que repmat.

    Syntaxe repmatAlternative équivalente
    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))

Capacités étendues

Génération de code HDL
Générez du code Verilog et VHDL pour les designs FPGA et ASIC avec HLD Coder™.

Historique des versions

Introduit avant R2006a

développer tout