Matlab中repelem, repmat, kron重复数组

6,896 阅读4分钟

repelem

重复数组元素副本

语法

u = repelem(v,n)
B = repelem(A,r1,...,rN)

说明

u = repelem(v,n) 返回一个重复 v 中元素的向量,其中 v 是一个标量或向量。

  • 如果 n 是一个标量,则 v 的每个元素都重复 n 次。u 的长度为 length(v)*n。

  • 如果 n 为向量,则它必须与 v 具有相同的长度。n 的每个元素指定重复 v 对应元素的次数。

B = repelem(A,r1,...,rN) 将 A 中的每个元素依 r1,...,rN 进行重复,返回一个数组。r1,...,rN 中的每个元素必须是一个标量,或是与 A 在对应维度具有相同长度的向量。例如,如果 A 是一个矩阵,repelem(A,2,3) 则返回一个矩阵,其中包含 A 中每个元素的一个 2×3 块。

示例

重复向量元素

创建一个向量,并将其每个元素重复三次复制到一个新向量中。

v = [1 2 3 4];
u = repelem(v,3)

u = 1×12

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

将 v 的头两个元素重复两次,最后两个元素重复三次。

u = repelem(v,[2 2 3 3])
u = 1×10

 1     1     2     2     3     3     3     4     4     4

重复矩阵元素

创建一个矩阵,并将其每个元素复制到一个新矩阵的 3×2 块中。
A = [1 2; 3 4]
A = 2×2

 1     2
 3     4

B = repelem(A,3,2)
B = 6×4

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

重复矩阵列

创建一个矩阵并将其列复制到新数组中,第一列重复两次,第二列重复三次。
A = [1 2; 3 4]
A = 2×2

 1     2
 3     4

B = repelem(A,1,[2 3])
B = 2×5

 1     1     2     2     2
 3     3     4     4     4

repmat

重复数组副本

语法

B = repmat(A,n)
B = repmat(A,r1,...,rN)
B = repmat(A,r)

说明

B = repmat(A,n)返回一个数组,该数组在其行维度和列维度包含 A 的 n 个副本。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

kron

Kronecker 张量积

语法

K = kron(A,B)

说明

K = kron(A,B) 返回矩阵 A 和 B 的 Kronecker 张量积。如果 A 是 m×n 矩阵,而 B 是 p×q 矩阵,则 kron(A,B) 是通过获取 A 元素与矩阵 B 元素之间的所有可能积而形成的一个 m*p×n*q 矩阵。

示例

重复矩阵元素

通过重复元素来扩展矩阵大小。
创建需要重复其元素的 2×2 矩阵和 2×3 矩阵。

A = [1 2 3; 4 5 6];
B = ones(2);

使用 kron 计算 Kronecker 张量积。

K = kron(A,B)
K = 4×6
 1     1     2     2     3     3
 1     1     2     2     3     3
 4     4     5     5     6     6
 4     4     5     5     6     6

结果为一个 4×6 分块矩阵。

总结

  • repelem和kron可用于重复数组元素,其作用单元是数组中的元素.
  • repmat重复数组,其作用单位是数组整体.

references:
[1]ww2.mathworks.cn/help/matlab…
[2]ww2.mathworks.cn/help/matlab…
[3]ww2.mathworks.cn/help/matlab…