数字滤波设计

数字信号处理的目的是在数字系统上执行,而不是在模拟电路上进行操作。 通过这种方式,它基于软件执行相同的任务,而不需要电子材料或更换。 这种方法确保设计简单且可升级。 比如用RC元件制作的模拟滤波器,就需要改变材料来改变滤波器的截止频率。 但是如果要在数字滤波中进行同样的操作,只需改变滤波系数即可。 尽管数字滤波器具有优势,但模拟滤波器用于许多领域,例如扬声器箱中的分频电路。

滤波器是将所需信号传输到输出端并抑制不需要的信号的系统。 在滤波器设计中,如果使用的材料是由 R、C 或 L 等元素制成的,则定义为模拟滤波器。 如果在电脑或微处理器等数字环境中进行滤波,则称为数字滤波器。

实现各种过滤器设计中,关键是截止频率,即决策点。 低通滤波器 (LPF) 是允许低于截止频率的频率值通过并抑制高于截止频率的频率的滤波器。 高通滤波器 (HPF) 是允许将高于截止频率的频率而不是低于截止频率的频率传输到输出的滤波器。 带通滤波器 (BPF) 有两个截止点。 该滤波器将两个截止频率之间的频率值传输到输出,其他频率被阻尼。 带阻滤波器 (BSF) 阻止两个截止频率之间的频率,并将其他频率传输到输出。 它被称为陷波滤波器,用于抑制电源噪声。

数字滤波器根据脉冲响应分为两组。 它们是有限脉冲响应 (FIR) 和无限脉冲响应 (IIR)。 FIR 滤波器具有线性相位响应,因此每个输入频率的群延迟相同。 IIR 滤波器具有非线性相位响应,因此群延迟根据应用的频率而变化。 由于 FIR 滤波器总是稳定的,因此可以将它们用作自适应滤波器。 FIR滤波器的滤波系数很多,因此处理负载增加。 然而,IIR 滤波器的滤波器系数很少,因此它们的处理负载较低。

示例:Python测试低通滤波器

生成测试信号:

samplingFreq = 1000
tlims = [0,1]        
signalFreq = [2,50]
signalMag = [1,0.2]
t = np.linspace(tlims[0],tlims[1],(tlims[1]-tlims[0])*samplingFreq)
y = signalMag[0]*np.sin(2*math.pi*signalFreq[0]*t) + signalMag[1]*np.sin(2*math.pi*signalFreq[1]*t)

yhat = np.fft.fft(y)
fcycles = np.fft.fftfreq(len(t),d=1.0/samplingFreq)

plt.figure()
plt.plot(t,y)
plt.ylabel("$y(t)$")
plt.xlabel("$t$ (s)")
plt.xlim([min(t),max(t)])

# Plot the power spectrum
plt.figure()
plt.plot(fcycles,np.absolute(yhat));
plt.xlim([-100,100]);
plt.xlabel("$\\omega$ (cycles/s)");
plt.ylabel("$|\\hat{y}|$");

异常值过滤算法

源代码

https://embed.notionlytics.com/wt/ZXlKd1lXZGxTV1FpT2lKallqVmxNemxtWm1Gak5tRTBOVFpsT1RJelptSTVNak0yT0RFMk1EWmhNU0lzSW5kdmNtdHpjR0ZqWlZSeVlXTnJaWEpKWkNJNklsZHNTR2hsVEZSUFdXeHpaVmRhUW1ZNU1YQmxJbjA9