Мне нужно вычислить взвешенные скользящие средние лучи и с сохранением информации. Вес может быть линейным, так что старый образец взвешен меньше, чем новый.Как эффективно вычислить средневзвешенную скользящую среднюю
Например, с помощью окна на 20 образцов, мой вес вектор будет:
[1 2 3 4 5 ... 20]
Я использую следующую формулу для вычисления перемещения среднее:
newMean = currMean + (newSample - currMean)/WindowSize
теперь мне нужно «впрыскивать» вес.
Что я могу знать: 1. Какой образец я рассматриваю (14-й .... 26-й ....), я могу рассчитывать. 2. Конечно, я могу знать currMean
Что я могу знать, но я не хочу делать: 1. хранить все образцы (в моем случае они 1200 х 1980 х 3 матрица, я просто могу хранить их).
В настоящее время я использую Matlab, но мне действительно не нужен код, просто концепция, если она существует.
Спасибо.
Я бы просто использовал свертку и построил ваш фильтр таким образом, чтобы все весовые суммы равнялись 1. ie '(1:20) ./ sum (1:20)' – Suever
Ммм. Я использую очень большие матрицы, Думаю, свертка будет для меня хорошей. Я имею в виду ... Я просто использую 3 простых математических упражнения прямо сейчас, почему я должен вводить свертку только для весов? – Leo91
Свертка делает * точно * то, что вы пытаетесь сделать, и делает это очень эффективно – Suever