- Matlab中filter函数的详解
输入数据x为1-D的情况
windowSize = 3;
b = (1/windowSize)*ones(1,windowSize);
a = 1;
x = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6];
y = filter(b, a, x);
# OUT: y = [0.033333, 0.1, 0.2, 0.3, 0.4, 0.5]
计算过程:
x被pad为[0, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6],在最前端填充windowSize-1个0
y(1) = (0 + 0 + 0.1) / 3 = 0.033333
y(2) = (0 + 0.1 + 0.2) / 3 = 0.1
y(3) = (0.1 + 0.2 + 0.3) / 3 = 0.2
…
y(6) = (0.4 + 0.5 + 0.6) / 3 = 0.5
- python中lfilter函数与上述操作相同
from scipy.signal import lfilter
import numpy as np
windowSize = 3
b = (1/windowSize)*np.ones(windowSize)
a = 1
x = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
y = lfilter(b, a, x)
# OUT: y = [0.033333, 0.1, 0.2, 0.3, 0.4, 0.5]