微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 中的奈奎斯特规范化

如何解决Python 中的奈奎斯特规范化

我被要求在 python 中创建一个带通零移滤波器。 我是信号处理的新手,在探索互联网上的例子时,我不得不学习拉普拉斯和 z 变换。

我用来生成滤波器系数的函数signal.butter()。 在示例中,我看到输出信号中非零频率的范围限制除以采样频率的一半 - 为什么?

它与奈奎斯特定理有关吗?不幸的是,没有从 butter() 文档中得到它。 感谢您的帮助:)

nyq = 0.5 * fs  # Why?
    low = low_cut / nyq
    high = high_cut / nyq
    b,a = butter(order,[low,high],'bandpass',analog=False,output='ba')

解决方法

对于从连续信号中以 s(每秒样本数)的速率采样的任何离散信号,奈奎斯特频率 s/2 (Hz) 是它可以表示的最高频率(这是用 fft.fftfreq 很明显)。

奈奎斯特定理强调了这个频率的重要性;您希望选择足够高的采样率以捕获原始连续信号的所有频率。如果采样速度太慢,就无法捕获较高的频率,它们会“污染”您的较低频率以启动(混叠)。

scipy.signal.butter 的文档说,具有默认 analog=False 值的数字滤波器 (fs) 要求将截止频率归一化为 0 到 1 之间。您的所有频率都小于或等于等于奈奎斯特频率,因此将您的频率除以奈奎斯特频率将进行归一化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。