MATLAB - 生成具有值序列的向量

时间:2016-06-09 10:12:54

标签: 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];

有没有一种优雅的方法来实现这一目标?

谢谢!

2 个答案:

答案 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

然后将整个矩阵重塑为一个向量