在matlab中矢量化两个向量

时间:2016-06-28 13:33:55

标签: matlab vector

嘿,我想要添加两个向量,以下情况应该发生

Vec1 = [1 3 5 7 9]
Vec2 = [2 4 6 8]


Vec = Vec1 + Vec2  = [1 2 3 4 5 6 7 8 9]

因此,Vec2的第i个数应该介于vec1的第i个和第i + 1个索引之间

我尝试使用for循环并使用偶数和奇数索引来执行此操作。但它没有用。

此外,手动执行此操作不是一种选择。我使用的真实载体非常大。

有人有小费吗?或者知道怎么做?

谢谢你们!

2 个答案:

答案 0 :(得分:2)

我们称这种连接不是添加。您希望将vec1分配给新向量中的所有奇数位置,并将vec2分配给所有偶数位置。我们可以这样做。

% We can pre-allocate the output
new = zeros(1, numel(vec1) + numel(vec2));

% Assign vec1 to all of the odd locations (all other slots remain 0)
new(1:2:(numel(vec1)*2)) = vec1;

% Assign vec2 to all of the even locations 
new(2:2:(numel(vec2)*2)) = vec2;

%   1   2   3   4   5   6   7   8   9

如果vec1vec2大小相同,我们可以使用cat后跟reshape

new = reshape(cat(1, vec1, vec2), 1, [])

答案 1 :(得分:0)

你可以这样做:

Vec1 = [1 3 5 7 9]
Vec2 = [2 4 6 8]

vec = [vec1 vec2]
sort(vec)

结果将是连接和排序的两个向量:

[1 2 3 4 5 6 7 8 9]