MATLAB-用值序列生成向量
给定两个参数:MATLAB-用值序列生成向量,matlab,Matlab,给定两个参数: 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]; 有没有一个优雅的方法来实现这一
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];
有没有一个优雅的方法来实现这一点
谢谢 有很多方法可以做到这一点: 方法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(:)'
这里有另一种方法
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
然后将整个矩阵重塑为一个向量