我试图在python中得到一个带通滤波器,它具有128点汉明窗口,截止频率为0.7- 4 Hz。我从图像中获取信号样本。(1个样本= 1个图像)。FPS经常变化。
如何在Python中做到这一点?我读到了:http://mpastell.com/2010/01/18/fir-with-scipy/但我觉得firwin相当混乱。如何使用这个变量fps来实现这一点?
我试图在python中得到一个带通滤波器,它具有128点汉明窗口,截止频率为0.7- 4 Hz。我从图像中获取信号样本。(1个样本= 1个图像)。FPS经常变化。
如何在Python中做到这一点?我读到了:http://mpastell.com/2010/01/18/fir-with-scipy/但我觉得firwin相当混乱。如何使用这个变量fps来实现这一点?
3条答案
按热度按时间y4ekin9u1#
可以使用函数
scipy.signal.firwin
或scipy.signal.firwin2
创建带通FIR滤波器。还可以使用scipy.signal.remez
设计FIR滤波器以下代码提供了一些用于创建带通FIR滤波器的方便 Package 器。它使用这些来创建与问题中要求的数字相对应的带通滤波器。这假设采样是均匀进行的。如果采样不均匀,则FIR滤波器是不合适的。
字符串
下面是脚本生成的情节。当然,在本地运行脚本要有用得多,这样您就可以放大细节。
的数据
9w11ddsr2#
尝试过滤采样率不一致的数据是非常困难的(不可能?)。因此,您将需要执行以下操作:
1.以固定采样率创建新信号。固定采样率应该是最大采样率或更高。通过设置一个新的“网格”来表示新样本的位置,并从现有数据中插入它们的值。根据所需的精度,存在多种插值方法。线性插值可能不是一个坏的起点,但它取决于你在做什么。如果你不确定的话,可以问https://dsp.stackexchange.com/。
1.一旦你做到了这一点,你就可以对你的信号应用标准的信号处理方法,因为样本是均匀放置的,比如你链接的帖子中描述的那些。
1.如有必要,可能需要再次插值以恢复原始采样位置。
如果你只想分析你的数据,你可能会对Lomb Periodigram感兴趣。而不是带通你的数据,然后分析,你会使用Lomb Periodigram,然后只看相关的频率,或权重的结果,无论你想要的。(另见数字食谱系列。第13.8章被称为“非均匀间隔数据的谱分析”,这似乎是一个比维基百科页面更友好的介绍)
ubby3x7f3#
另一选项将是(异步)采样率转换,以在滤波之前将数据转换为恒定采样率(如“网格化”)。当然,这只有在你知道采样率的情况下才有效,而且只有在你真的需要过滤数据(而不仅仅是估计频谱)的情况下才有用。
为此,例如插值的UnivariateSpline从scipy.插值可以应用于逐帧,这是相当快的。