Main Content

repmat

重复数组副本

说明

示例

B = repmat(A,n) 返回一个数组,该数组在其行维度和列维度包含 An 个副本。A 为矩阵时,B 大小为 size(A)*n

示例

B = repmat(A,r1,...,rN) 指定一个标量列表 r1,..,rN,这些标量用于描述 A 的副本在每个维度中如何排列。当 A 具有 N 维时,B 的大小为 size(A).*[r1...rN]。例如:repmat([1 2; 3 4],2,3) 返回一个 4×6 的矩阵。

示例

B = repmat(A,r) 使用行向量 r 指定重复方案。例如,repmat(A,[2 3])repmat(A,2,3) 返回相同的结果。

示例

全部折叠

创建一个所有元素的值均为 10 的 3×2 矩阵。

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

    10    10
    10    10
    10    10

将矩阵副本重复到 2×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

将矩阵副本重复到 2×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

将矩阵副本重复到 2×2×3 块排列中。

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

垂直堆叠行向量四次。

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

水平堆叠列向量四次。

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

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

使用 AgeHeight 创建表。

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

    39       70  
    26       63  

重复表格副本并将其加入到 2×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 重复表项,并将一个数字追加到新变量名称后面。

创建两个列向量。

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

使用 repelemrepmat 生成两个向量的所有元素组合。输出 T 的每行均为来自第一个向量的第一个元素和来自第二个向量的第二个元素的组合。此命令等效于求两个向量的笛卡尔积。

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

从 R2023a 开始,您还可以使用 combinations 函数来生成两个向量的所有元素组合。

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

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

输入参数

全部折叠

输入数组,指定为标量、向量、矩阵或多维数组。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | datetime | duration | calendarDuration | categorical | cell
复数支持:

要在行和列维度重复输入数组的次数,指定为整数值。如果 n0 或负数,结果为空数组。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

每个维度的重复因子,指定为包含整数值的单独参数。如果任何重复因子为 0 或负数,则结果为空数组。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

每个维度的重复因子的向量,指定为由整数组成的行向量。如果 r 中的任何值为 0 或负数,则结果为空数组。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

提示

  • 要通过由 1 构成的数组的输入形成张量积来构建块数组,请使用 kron。例如,要将行向量 A = 1:3 垂直堆叠四次,您可以使用 B = kron(A,ones(4,1))

  • 要一次性创建块数组并执行二元运算,请使用 bsxfun。在某些情况下,bsxfun 提供一个更简单、内存效率更高的解。例如,要添加向量 A = 1:5B = (1:10)' 以生成 10×5 数组,请使用 bsxfun(@plus,A,B) 而非 repmat(A,10,1) + repmat(B,1,5)

  • A 为特定类型的标量时,可使用其他函数获得与 repmat 一样的结果。

    repmat 语法等效替代方法
    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))

扩展功能

HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。

版本历史记录

在 R2006a 之前推出

全部展开