Matlab 如何有效地计算加权移动平均

Matlab 如何有效地计算加权移动平均,matlab,math,mean,weighted,Matlab,Math,Mean,Weighted,我需要计算一个加权移动平均值,有循环,没有存储信息。权重可以是线性的,因此旧样本的权重小于新样本的权重 例如,使用20个样本窗口,我的权重向量为: [1 2 3 4 5 ... 20] 我使用以下公式来计算移动平均值: newMean = currMean + (newSample - currMean)/WindowSize 现在我需要“注入”体重 我能知道的是: 1.我正在考虑哪一个样本(14…26…),我可以数一数。 2.当然,我知道你的意思 我知道但不想做的事: 1.存储所有样

我需要计算一个加权移动平均值,有循环,没有存储信息。权重可以是线性的,因此旧样本的权重小于新样本的权重

例如,使用20个样本窗口,我的权重向量为:

[1 2 3 4 5 ... 20]
我使用以下公式来计算移动平均值:

   newMean = currMean + (newSample - currMean)/WindowSize
现在我需要“注入”体重

我能知道的是: 1.我正在考虑哪一个样本(14…26…),我可以数一数。 2.当然,我知道你的意思

我知道但不想做的事: 1.存储所有样本(在我的例子中,它们是1200 x 1980 x 3矩阵,我根本无法存储它们)

我目前正在使用Matlab,但我真的不需要代码,只要概念,如果它存在的话


谢谢。

研究数字信号处理技术。您描述的是一个FIR滤波器,它可以实现为卷积,也可以实现为一个节省内存的电路。基本上,您可以将其重写为一个递归方程,只保留过滤器长度超过过滤的中间状态变量。MATLAB在
filter
函数中执行此操作(您可以链接内部状态以继续过滤)。请参阅
filter
的文档,我还建议您阅读DSP教科书

我只需要使用卷积,构造滤波器,使所有权重之和为1。i、 e.
(1:20)。/sum(1:20)
嗯,我使用的是非常大的矩阵,我认为卷积对我不好。我的意思是..我现在只使用了3个简单的数学运算,为什么我应该只为权重引入卷积?卷积正是你想要做的,而且非常有效。我当时只能访问一个样本(我不记得其他样本)。你可能想看看()这将告诉您如何计算指数加权移动平均值,而无需像现在这样使用更多的存储。