移动平均数字滤波器实现

Moving average digital filter implementation

我需要为一些 post 处理实现移动平均数字滤波器 在 Scilab 中记录示波器波形。我已经准备了一个脚本 下面给定的代码(平均 window 包含 256 个样本的递归实现)

// number of samples
N = 350000;
// vector of voltage samples
voltage = M(1:N, 2)';

// filtered values
filt_voltage = zeros(1:N);
// window length
L = 256;
// sum of the samples in the averaging window
sum = 0

for i = 1:N_01
    // averaging window full?
    if i > L
        // remove the oldest sample in the averaging window
        sum = sum - voltage(i - L);
    end
    // add the newest sample into the averaging window
    sum = sum + voltage(i);
    // average of the samples in the averaging window
    filt_voltage(i) = sum/L; 
end

脚本输出如下(蓝色波形-记录的数据,红色波形-过滤后的数据)

问题是我不确定我是否执行移动平均线 是正确的(我发现很多实现主要基于卷积)。输出似乎以某种方式被过滤,但它会有所帮助 对我来说,如果有人可以向我确认它是正确的。提前致谢。

您的实施没有任何问题。事实上,它是 stats.stackexchange.com and on wikipedia:

上给出的递归公式的常见实现