Arrays 在matlab中用向量中的正负元素交替构造数组的最快方法?

Arrays 在matlab中用向量中的正负元素交替构造数组的最快方法?,arrays,matlab,vector,Arrays,Matlab,Vector,我有一个向量,它有一些值,比如[2,3,4,5,6,7…],我想构造一个数组,重复原始向量中的值,但也在后面有原始值的负数。因此,从给定向量得到的数组将是[2,-2,3,-3,4,-4…]。在matlab中,最好的方法是什么 以下是一些方法: 连接和重塑: x = [2,3,4,5,6,7]; y = reshape([x; -x], 1, []); 预先分配y,然后填写以下值: x = [2,3,4,5,6,7]; y(numel(x)*2) = 0; % preallocate y y(

我有一个向量,它有一些值,比如
[2,3,4,5,6,7…]
,我想构造一个数组,重复原始向量中的值,但也在后面有原始值的负数。因此,从给定向量得到的数组将是
[2,-2,3,-3,4,-4…]
。在matlab中,最好的方法是什么

以下是一些方法:

  • 连接和重塑:

    x = [2,3,4,5,6,7];
    y = reshape([x; -x], 1, []);
    
  • 预先分配
    y
    ,然后填写以下值:

    x = [2,3,4,5,6,7];
    y(numel(x)*2) = 0; % preallocate y
    y(1:2:end) = x;
    y(2:2:end) = -x;
    
  • 同时预分配和填充偶数索引值:

    x = [2,3,4,5,6,7];
    y(2:2:2*numel(x)) = -x;
    y(1:2:end) = x;
    

  • 就在我之前。:)尝试了第一种方法。它给了我
    [2,3,4,5,6…-2,-3,-4,-5,-6]
    ,但我需要
    [2,-2,3,-3..]
    。@gnovice 10秒!:-)@acbh您是否检查了更新的答案?我最初有
    missing@acbh:向量是行向量还是列向量?我猜您正在处理一个列向量,但是您的问题和这个答案使用行向量作为输入。