为什么在 firwin 滤波器上使用 scipy 的 freqz 时我们得到有限的频率分辨率?
Why when using scipy's freqz on a firwin filter we get a limited frequency resolution?
我最近一直在处理以高采样率(1M 及更高)采样的数据
我正在尝试编写一个高效的多相滤波器,(基于看到的代码 here)
我的抽取率接近 10000,因此要过滤的奈奎斯特频率约为 100Hz
经过一些调试,我意识到当使用 scipy.signal.freqz 表示我的滤波器抽头时,分辨率被限制在大约 1000 Hz,这在增加 fir 滤波器阶数时不会改变。
我找不到关于这个问题的任何文档,我怎样才能以更高分辨率观察我的过滤器?
分辨率scipy.signal.freqz
通过公式fs/2/worN
for half-spectrum(或fs/worN
for full-spectrum).由于 worN
默认为 512,如果您的信号以 1MHz 采样,您将获得大约 1000000Hz/2/512 ~ 1000 的分辨率。
要增加 filterCoefficients
上 freqz
的分辨率(在您的情况下由 firwin
获得),只需增加 worN
。例如:
w,h = freqz(filterCoefficients, worN=2048, fs=fs)
我最近一直在处理以高采样率(1M 及更高)采样的数据
我正在尝试编写一个高效的多相滤波器,(基于看到的代码 here)
我的抽取率接近 10000,因此要过滤的奈奎斯特频率约为 100Hz
经过一些调试,我意识到当使用 scipy.signal.freqz 表示我的滤波器抽头时,分辨率被限制在大约 1000 Hz,这在增加 fir 滤波器阶数时不会改变。
我找不到关于这个问题的任何文档,我怎样才能以更高分辨率观察我的过滤器?
分辨率scipy.signal.freqz
通过公式fs/2/worN
for half-spectrum(或fs/worN
for full-spectrum).由于 worN
默认为 512,如果您的信号以 1MHz 采样,您将获得大约 1000000Hz/2/512 ~ 1000 的分辨率。
要增加 filterCoefficients
上 freqz
的分辨率(在您的情况下由 firwin
获得),只需增加 worN
。例如:
w,h = freqz(filterCoefficients, worN=2048, fs=fs)