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

Python 在BeagleBone Black上使用numpy(不是scipy!)编程butterworth过滤器,python,numpy,filter,beagleboneblack,Python,Numpy,Filter,Beagleboneblack,我是Python的新用户,也是一名业余程序员——我希望能够使用numpy库过滤信号。它将被编程到BeagleBone Black上,操作系统是Angstrom Linux,因此它将更新到的最远numpy库是1.4,并且由于谣传的数据限制(我不确定如何检查),或者只是numpy版本太早,scipy将无法在板上工作 因此,第一个解决方案是获得一个新的操作系统,但我不知道从哪里开始;我更喜欢将方程放入程序中 我希望使用filter函数,但也许最好从lfilter开始。这个网站似乎有助于实现它,但我有点

我是Python的新用户,也是一名业余程序员——我希望能够使用numpy库过滤信号。它将被编程到BeagleBone Black上,操作系统是Angstrom Linux,因此它将更新到的最远numpy库是1.4,并且由于谣传的数据限制(我不确定如何检查),或者只是numpy版本太早,scipy将无法在板上工作

因此,第一个解决方案是获得一个新的操作系统,但我不知道从哪里开始;我更喜欢将方程放入程序中

我希望使用filter函数,但也许最好从lfilter开始。这个网站似乎有助于实现它,但我有点不知所措:
我能够在MATLAB中获得滤波器系数,然后将它们传输到BeagleBone。x就是我可以上传的信号数组

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

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


-Rob

对于过滤器设计函数,您可以从sicpy.signal.filter\u design.py复制代码,它们几乎都是纯python代码

但是要对IIR过滤器执行
lfilter
,您需要为数据数组中的每个样本创建一个for循环。由于Python中的for循环很慢,我认为您需要用C实现它,并通过ctypes调用它。在目标机器中有c编译吗

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