我需要实现移动平均数字滤波器,以便在 Scilab 中对一些记录的示波器波形进行后处理。我已经准备了一个带有以下给定代码的脚本(具有包含 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
脚本输出如下(蓝色波形 - 记录数据,红色波形 - 过滤数据)
问题是我不确定我的移动平均实现是否正确(我发现很多实现主要基于卷积)。输出似乎以某种方式过滤,但如果有人可以向我确认它是正确的,这对我会有帮助。提前致谢。