Main Content

repmat

Repetir copias de un arreglo

Descripción

ejemplo

B = repmat(A,n) devuelve un arreglo que contiene n copias de A en las dimensiones de fila y de columna. El tamaño de B es size(A)*n cuando A es una matriz.

ejemplo

B = repmat(A,r1,...,rN) especifica una lista de escalares, r1,..,rN, que describe cómo se disponen las copias de A en cada dimensión. Cuando A tiene N dimensiones, el tamaño de B es size(A).*[r1...rN]. Por ejemplo, repmat([1 2; 3 4],2,3) devuelve una matriz de 4 por 6.

ejemplo

B = repmat(A,r) especifica el esquema de repetición con el vector fila r. Por ejemplo, repmat(A,[2 3]) devuelve el mismo resultado que repmat(A,2,3).

Ejemplos

contraer todo

Cree una matriz de 3 por 2 cuyos elementos contengan el valor 10.

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

    10    10
    10    10
    10    10

Repita copias de una matriz en una disposición de bloque de 2 por 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

Repita copias de una matriz en una disposición de bloque de 2 por 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

Repita copias de una matriz en una disposición de bloque de 2 por 3 por 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

Apile verticalmente un vector fila cuatro veces.

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

Apile horizontalmente un vector columna cuatro veces.

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

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

Cree una tabla con variables Age y Height.

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

    39       70  
    26       63  

Repita copias de la tabla en un formato de bloque de 2 por 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 repite las entradas de la tabla y anexa un número a los nuevos nombres de variable.

Cree dos vectores columna.

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

Genere combinaciones de todos los elementos de los dos vectores mediante repelem y repmat. Cada fila de la salida T es una combinación con el primer elemento procedente del primer vector y el segundo elemento procedente del segundo vector. Este comando equivale a encontrar el producto cartesiano de dos vectores.

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 partir de la versión R2023a, también puede utilizar la función combinations para generar todas las combinaciones de elementos de dos vectores.

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

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

Argumentos de entrada

contraer todo

Arreglo de entrada, especificado como escalar, vector, matriz o arreglo multidimensional.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | datetime | duration | calendarDuration | categorical | cell
Soporte de números complejos:

Número de veces que repetir un arreglo de entrada en las dimensiones de fila y de columna, especificado como valor entero. Si n es 0 o negativo, el resultado es un arreglo vacío.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Factores de repetición para cada dimensión, especificados como argumentos separados de valores enteros. Si cualquier factor de repetición es 0 o negativo, el resultado es un arreglo vacío.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Vector de factores de repetición para cada dimensión, especificado como vector fila de valores enteros. Si cualquier valor de r es 0 o negativo, el resultado es un arreglo vacío.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Sugerencias

  • Para construir arreglos de bloque formando el producto tensorial de la entrada con un arreglo de unos, utilice kron. Por ejemplo, para apilar el vector fila A = 1:3 cuatro veces verticalmente, puede utilizar B = kron(A,ones(4,1)).

  • Para crear arreglos de bloque y ejecutar una operación binaria en un único paso, utilice bsxfun. En algunos casos, bsxfun ofrece una solución más sencilla y más eficiente en el uso de la memoria. Por ejemplo, para añadir los vectores A = 1:5 y B = (1:10)' a fin de producir un arreglo de 10 por 5, utilice bsxfun(@plus,A,B) en lugar de repmat(A,10,1) + repmat(B,1,5).

  • Cuando A es un escalar de un tipo determinado, puede utilizar otras funciones para obtener el mismo resultado que repmat.

    sintaxis 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))

Capacidades ampliadas

Generación de código HDL
Genere código Verilog y VHDL para diseños FPGA y ASIC mediante HDL Coder™.

Historial de versiones

Introducido antes de R2006a

expandir todo

Consulte también

| | | | | | |