【发布时间】:2017-02-20 02:39:24
【问题描述】:
我需要计算一个没有循环且不存储信息的加权移动平均值。权重可以是线性的,因此旧样本的权重小于新样本的权重。
例如,使用 20 个样本窗口,我的权重向量将是:
[1 2 3 4 5 ... 20]
我正在使用以下公式来计算移动均值:
newMean = currMean + (newSample - currMean)/WindowSize
现在我需要“注入”重量。
我能知道的: 1.我正在考虑哪个样本(14th....26th....),我可以数数。 2.当然,我可以知道currMean
我可以知道但我不想做的事情: 1. 存储所有样本(在我的情况下它们是 1200 x 1980 x 3 矩阵,我根本无法存储它们)。
我目前正在使用 Matlab,但我真的不需要代码,只需要概念,如果它存在的话。
谢谢。
【问题讨论】:
-
我将只使用卷积并构造您的过滤器,使所有权重总和为 1。即
(1:20) ./ sum(1:20) -
嗯,我正在使用非常大的矩阵,我不认为卷积对我有好处。我的意思是..我现在只使用 3 个简单的数学运算,为什么我应该只为权重引入卷积?
-
卷积精确地完成你想要做的事情,而且效率很高
-
我一次只能访问一个样本(我不记得其他样本)。
-
您可能想看看 (en.wikipedia.org/wiki/Moving_average),它告诉您如何计算指数加权移动平均值,而无需像现在这样使用更多存储空间。