如何确定滤波器功能是否适用于半幅或半功率截止

时间:2018-05-28 12:15:02

标签: python scipy filtering signal-processing

我使用scipy.signal.firwin来过滤我拥有的信号。现在我想报告使用的截止频率,但是文档在这些方面并不清楚:

  • 如何指定截止频率?半功率(-3dB)还是半幅(-6dB)? ...

  • “定位”的截止频率在哪里?过渡带中间?在通带和过渡带之间的边缘? ...

在我的情况下,了解scipy.signal.firwin的speficis已经有所帮助。但是一个额外的答案是展示我如何通过计算方式找到这个(或者可能通过绘图?)

2 个答案:

答案 0 :(得分:1)

fc期望的半幅频率。在firwin设计的实际滤波器中,fc的增益约为0.5,随着抽头数量的增加,近似值也会提高。

这是一个图表,显示了使用firwin和几个不同窗口设计的几个低通滤波器的频率响应。生成绘图的脚本如下所示。

plot

import numpy as np
from scipy.signal import firwin, freqz
import matplotlib.pyplot as plt


# Desired half-amplitude cutoff
fc = 0.2

# Length of the FIR filter
numtaps = 51

windows = ['boxcar', 'hann', 'hamming', 'blackman']

for window in windows:
    taps = firwin(numtaps, fc, window=window, scale=False)
    w, h = freqz(taps, worN=8000)

    plt.plot(w/np.pi, np.abs(h), label=window)

plt.legend(title='Window Function', loc='best', framealpha=1, shadow=True)
plt.axhline(0.5, alpha=0.3, color='k', linestyle='--', linewidth=1)
plt.grid(True)
plt.xlim(0, 2*fc)
plt.xlabel('Normalized frequency (1 = Nyquist)')
plt.ylabel('Gain')

plt.show()

答案 1 :(得分:0)

窗口方法是一种启发式方法,用于近似理想(砖墙)滤波器(具有无限抽头)的频率响应。因此,"截止"频率对应于您尝试近似的理想滤波器的截止频率(半功率/幅度截止的概念在理想设置中没有意义)。当然,由于最终设计只是理想的近似值,您必须检查其频率响应,看它是否足以满足您的需求。