给出两个参数:
n %number of repetitions per value
k %max value to repeat
我想创建一个大小为n * k的向量,它是大小为n的k个向量的串联,这样第i个向量在每个坐标处包含值i。
示例:
n = 5;
k = 9;
期望的结果:
[1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,9];
有没有一种优雅的方法来实现这一目标?
谢谢!
答案 0 :(得分:3)
有很多方法可以做到:
方法1:
A=1:k
repelem(A',n,1)'
方法2:
A=1:k
kron(A', ones(n,1))'
方法3:
A=1:k
B=repmat(A, n, 1)
B(:)'
方法4:
A=1:k
B=ones(n,1)*A
B(:)'
答案 1 :(得分:2)
这是另一种方法
A = reshape(mtimes((1:k).',ones(1,n)).',1,n*k)
A =
Columns 1 through 22
1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5
Columns 23 through 44
5 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 9 9 9 9
Column 45
9
它将每个元素乘以n次
>> mtimes((1:k).',ones(1,5)).'
ans =
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
然后将整个矩阵重塑为一个向量