使用numpy在BeagleBone B上编写Butterworth滤波器程序(不使用scipy!)

2024-09-28 21:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

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

-罗布


Tags: 用户numpy算法信号linux编程scipy程序员
1条回答
网友
1楼 · 发布于 2024-09-28 21:24:15

对于过滤器设计函数,可以从sicpy.sicpy.sicpy.sicpy.sicpy.sicpy.filter_设计.py,它们几乎是纯python代码。在

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

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

相关问题 更多 >