Самый быстрый способ построить массив с чередующимися положительными и отрицательными элементами, взятыми из вектора в Matlab?

У меня есть вектор, который имеет такие значения, как [2,3,4,5,6,7...]Я хотел бы создать массив, который повторяет значения в исходном векторе, но также имеет отрицательное значение исходного значения сразу после него. Таким образом, результирующий массив из данного вектора будет [2, -2, 3, -3, 4, -4...], Каков наилучший способ сделать это в Matlab?

1 ответ

Решение

Вот несколько способов:

  1. Объединить и изменить:

    x = [2,3,4,5,6,7];
    y = reshape([x; -x], 1, []);
    
  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;
    
  3. Предварительно распределите и заполните четно-индексированные значения одновременно:

    x = [2,3,4,5,6,7];
    y(2:2:2*numel(x)) = -x;
    y(1:2:end) = x;
    
Другие вопросы по тегам