堆积传染媒介的元素的拷贝

时间:2017-06-16 10:17:27

标签: arrays matlab vector

我有一个包含N=1263条目的向量:

temp=[14, 0.5, ..., 12]

我想制作一个重复条目1的向量,即14,42次,然后是条目2,即0.5,42次,并且类似地全部通过向量。它应该生成一个大小为53046x1的向量。

以下代码适用于简单案例:

F = [1 4 9];
R = [repmat(F(1),[3,1]); repmat(F(2),[3,1]); repmat(F(3),[3,1])]    
R = [1 1 1 4 4 4 9 9 9]

N变大时很麻烦。有更快的方法吗?

3 个答案:

答案 0 :(得分:3)

这正是repelem(在R2015a中引入)的用途。对于您的实际问题,您将使用:

R = repelem(temp.',42);  %This will repeat each entry of 'temp' 42 times

对于给定的例子,

F = [1 4 9];
R = repelem(F.',3);      %This will repeat each entry of 'F' 3 times

您也可以这样做:

R = ones(42,1)*temp;
R = R(:);

答案 1 :(得分:1)

有一种不寻常的方式,但它有效

https://www.mathworks.com/help/matlab/ref/kron.html

您需要做的就是包括矩阵以及重复长度的矩阵。

R = kron(F(:),ones(42,1));

答案 2 :(得分:0)

R = reshape(repmat(F, 42, 1), [], 1);