将列向量复制到更长的列向量中

时间:2013-11-10 17:24:03

标签: matlab

A = [3;4;5]开始,我想将其复制六次以获得A =[3;3;3;3;3;3;4;4;4;4;4;4;5;5;5;5;5;5]

我可以想到一些蛮力的方法来做到这一点,但寻找优化的东西,因为这将多次运行循环。

3 个答案:

答案 0 :(得分:4)

如何使用kron?它非常适合这个目的。

kron(A,ones(6,1))

答案 1 :(得分:1)

又一种可能性,它不涉及算术运算:

reshape(repmat(A,1,6).',[],1);

但是,如果你确实需要 speed ,并且如果A向量大小在循环的所有迭代中都相同,那么最好预计算(在循环之外)像这样的索引向量

ind = reshape(repmat([1;2;3],1,6).',[],1);

然后在循环内你只需要做

A(ind)

答案 2 :(得分:0)

A = [3;4;5];
duplicate_factor = 6;
A = reshape((A*(ones(duplicate_factor,1))')', [], 1)