Самый быстрый способ построить массив с чередующимися положительными и отрицательными элементами, взятыми из вектора в Matlab?
У меня есть вектор, который имеет такие значения, как [2,3,4,5,6,7...]
Я хотел бы создать массив, который повторяет значения в исходном векторе, но также имеет отрицательное значение исходного значения сразу после него. Таким образом, результирующий массив из данного вектора будет [2, -2, 3, -3, 4, -4...]
, Каков наилучший способ сделать это в Matlab?
1 ответ
Решение
Вот несколько способов:
Объединить и изменить:
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;