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
然后将整个矩阵重塑为一个向量