我有一个包含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
变大时很麻烦。有更快的方法吗?
答案 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);