首页 文章

在BeagleBone Black上使用numpy(不是scipy!)编程一个butterworth过滤器

提问于
浏览
3

我是Python的新用户和一般的业余程序员 - 我希望能够使用numpy库过滤信号 . 它将被编程到BeagleBone Black上,操作系统是Angstrom Linux,所以它将更新到最远的numpy库是1.4并且由于传闻数据限制(我实际上不确定如何检查)或者只是numpy版本太早,scipy将不会在董事会上工作 .

所以第一个解决方案是获得一个新的操作系统,但我不知道从哪里开始;在将方程式放入程序中我更为舒适 .

我希望使用filtfilt函数,但也许最好从lfilter开始 . 这个网站似乎对实现它很有帮助,但它有点超出我的范围:http://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.signal.lfilter.html
我能够在MATLAB中获取滤波器系数,然后将它们传输到BeagleBone . x只是我可以上传的信号数组 .

第二部分有点跳 - 所以有没有办法在numpy中执行z变换,而不是scipy?另外,基于MATLAB中滤波器算法的所有保密性,我没有信心解决这个问题,但是有没有某种数学算法描述,或者更好的代码,描述我如何实现这一点?

感谢您耐心阅读本文和回复 . 请不要在回复中使用复杂的语言!

-抢

1 回答

  • 0

    对于过滤器设计函数,您可以从sicpy.signal.filter_design.py复制代码,它们几乎是纯Python代码 .

    但要为IIR滤波器执行 lfilter ,您需要为数据数组中的每个样本提供一个for循环 . 因为Python中的循环很慢,我认为你需要在C中实现它,并通过ctypes调用它 . 你在目标机器上有c编译吗?

    如果您可以将滤波器设计为FIR滤波器,则可以使用 numpy.convolve(b, x) .

相关问题