构建一个具有交替的正负元素的数组的最快方法是从matlab中的向量中获取的?

acb*_*cbh 2 arrays matlab vector

我有一个具有如下值的向量[2,3,4,5,6,7...],我想构造一个数组,它重复原始向量中的值,但在它之后也有原始值的负数.因此,给定向量的结果数组将是[2, -2, 3, -3, 4, -4...].在matlab中最好的方法是什么?

Lui*_*ndo 5

以下是一些方法:

  1. 连接和重塑:

    x = [2,3,4,5,6,7];
    y = reshape([x; -x], 1, []);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 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;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 同时预分配和填充偶数索引值:

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