在 MATLAB 中,repmat 是一个函数,用于将数组按照指定的维度重复排列,从而生成一个更大的数组。它非常适合用于创建重复模式或扩展数组。
语法
B = repmat(A, m, n)
B = repmat(A, [m, n, p, ...])
A:输入数组,可以是标量、向量、矩阵或多维数组。m, n, p, ...:表示在每个维度上重复的次数。B:输出数组,是通过重复A生成的新数组。
功能说明
repmat会按照指定的次数,将输入数组A沿每个维度重复排列。- 输出数组
B的大小等于size(A) .* [m, n, p, ...]。
示例
1. 重复标量
将标量 5 重复为一个 3×4 的矩阵:
A = 5;
B = repmat(A, 3, 4);
disp(B);
结果:
B =
5 5 5 5
5 5 5 5
5 5 5 5
2. 重复向量
将向量 [1, 2, 3] 沿行方向重复 2 次,沿列方向重复 3 次:
A = [1, 2, 3];
B = repmat(A, 2, 3);
disp(B);
结果:
B =
1 2 3 1 2 3 1 2 3
1 2 3 1 2 3 1 2 3
3. 重复矩阵
将一个 2×2 矩阵沿行方向重复 2 次,沿列方向重复 3 次:
A = [1, 2; 3, 4];
B = repmat(A, 2, 3);
disp(B);
结果:
B =
1 2 1 2 1 2
3 4 3 4 3 4
1 2 1 2 1 2
3 4 3 4 3 4
4. 重复多维数组
将一个 2×2×2 的三维数组重复两次:
A = rand(2, 2, 2); % 随机生成一个 2×2×2 的三维数组
B = repmat(A, [2, 2, 1]); % 沿第1维和第2维重复两次
size(B) % 查看 B 的尺寸
结果:
ans =
4 4 2
使用场景
-
扩展数组以匹配维度: 在矩阵计算中,
repmat可以用来扩展一个较小的数组以匹配另一个数组的维度。 -
生成重复模式: 用于创建周期性或重复的矩阵模式。
-
与广播操作结合: MATLAB 在 R2016b 之后支持隐式广播,但在旧版本中,
repmat是实现广播效果的重要工具。
注意事项
-
效率问题: 在较新的 MATLAB 版本中,
repmat的许多功能可以通过隐式广播实现,这通常更高效。例如:A = [1, 2, 3]; B = repmat(A, 2, 1); % 等价于 B = A .* ones(2, 3) -
数据大小限制: 如果重复次数过大,生成的数组可能会超出内存限制。
与其他函数的对比
-
repmatvskron:repmat是直接重复整个数组。kron是计算 Kronecker 积,生成的结果通常比repmat更复杂。
-
repmatvs 广播:- MATLAB 的隐式广播功能(R2016b 及以后)可以替代
repmat的许多功能,并且更高效。
- MATLAB 的隐式广播功能(R2016b 及以后)可以替代
1万+

被折叠的 条评论
为什么被折叠?



