在循环中多次附加一个向量

时间:2018-01-12 11:15:03

标签: matlab loops vector append

我认为它应该很容易,但我不知道如何在循环中附加一个矢量。

例如:

a = [1 2 3]

我想:

b = [1 2 3 1 2 3 1 2 3]

那么,必须有一个空数组,我通过循环将a向量追加3次?

2 个答案:

答案 0 :(得分:2)

答案是使用内置函数repmat

a = [1 2 3]
% Repeat 1x in the rows dimension, 3x in the columns dimension
b = repmat( a, 1, 3 );
% >> b = [1 2 3 1 2 3 1 2 3]

答案 1 :(得分:1)

要附加两个向量,请使用[a, b]表示法。 以你的例子:

a = [1 2 3];
b = [];
for i=1:3
   b = [b, a]; 
end

编辑以响应有关内存分配时间的评论:

考虑在循环之前预先分配整个数组。

a = [1 2 3];
b= zeros(1, size(a,2)*3);
s_a = size(a,2);
for i=1:3
   b(((i-1)*s_a + 1):i*s_a) = a; 
end