【问题标题】:vectorizing two vectors in matlab在matlab中向量化两个向量
【发布时间】:2016-06-29 05:33:21
【问题描述】:

大家好,我想添加两个向量,应该会发生以下情况

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 循环并使用偶数和奇数索引来执行此操作。然而它没有用。

此外,手动操作也不是一种选择。我使用的真实向量非常大。

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

谢谢大家!

【问题讨论】:

  • 只是一个一般性说明,这个问题现在已经回答了很多次,所以要么人们没有搜索正确的词,因为使用的术语是错误的或含糊的(就像这个问题的标题)或者他们需要某人的个人接触来回答他们......

标签: matlab vector


【解决方案1】:

我们称这种连接不是加法。您想将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, [])

【讨论】:

    【解决方案2】:

    你可以这样做:

    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]
    

    【讨论】:

    • 我很确定 OP 使用的值只是为了说明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    相关资源
    最近更新 更多