repmat
重复数组副本
说明
示例
使用相同的元素值初始化矩阵
方块格式
将矩阵副本重复到 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
垂直行向量堆叠
包含列向量的水平堆叠
表格块格式
使用 Age
和 Height
创建表。
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];
使用 repelem
和 repmat
生成两个向量的所有元素组合。输出 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
输入参数
A
— 输入数组
标量 | 向量 | 矩阵 | 多维数组
输入数组,指定为标量、向量、矩阵或多维数组。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| struct
| table
| datetime
| duration
| calendarDuration
| categorical
| cell
复数支持: 是
n
— 要在行和列维度重复输入数组的次数。
整数值
要在行和列维度重复输入数组的次数,指定为整数值。如果 n
为 0
或负数,结果为空数组。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
r1,...,rN
— 每个维度的重复因子(指定为单独的参量)
整数值
每个维度的重复因子,指定为包含整数值的单独参量。如果任何重复因子为 0
或负数,则结果为空数组。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
r
— 每个维度的重复因子的向量(作为行向量)
整数值
每个维度的重复因子的向量,指定为由整数组成的行向量。如果 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:5
和B = (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))
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
大小参量必须具有固定大小。
对于稀疏矩阵,
repmat
函数不支持将尾部参数作为在前两个维度后的输入。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
用法说明和限制:
大小参量必须具有固定大小。
对于稀疏矩阵,
repmat
函数不支持将尾部参数作为在前两个维度后的输入。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出R2019b: 一些复制操作参量会产生错误
从 R2019b 开始,一些含有非标量或空的复制操作参量的语法将产生错误。下表说明如何更新这些语法。
错误 | 改用 |
---|---|
repmat(A,r1,r2) ,其中 r1 和 r2 是行向量 | repmat(A,[r1 r2]) |
repmat(A,empt) ,其中 empt 是空数组 | repmat(A,1) |
repmat(A,empt1,empt2) ,其中 empt1 和 empt2 是空数组 | repmat(A,1) |
repmat(A,n,empt) ,其中 n 是整数,empt 是空数组 | repmat(A,[n 1]) |
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)