Я хотел бы вычислить среднее значение для каждого элемента, предыдущего и следующего в векторе-строке, для всех элементов, начиная со второго, и я хотел бы сделать это с помощью векторизованной реализации.
Предположим, у меня есть этот вектор строки:
a = [4, 7, 1, 3, 2];
, который я хочу получить:
b = [4, 3.66, 2, 1.66];
, что, в свою очередь, означает последующие триплеты:
[4 7 1], [7 1 3], [1 3 2], [3 2 0] (ноль условен).
Кстати, приближение к двум цифрам здесь неактуально, оно только дляради примера.
Я придумал этот код:
a = [4 7 1 3 2];
function shifted = generateShiftedValues(rowVec)
shifted = rowVec;
for i=2:3
shifted(i, :) = [rowVec(1, i:end), zeros(1, i-1)];
endfor
endfunction
b = mean(generateShiftedValues(a)(:, 1:end-1), 1)
но то, что я хотел бы получить, это полностью векторизованная реализация .
Возможно ли это? Есть идеи? Спасибо вам большое.