如何对SQL数据应用信号过滤器(高通/低通)

时间:2019-05-01 20:08:44

标签: sql filter signals

我的数据库存储时间序列传感器数据。我试图在执行进一步处理之前应用高通/低通滤波器来清理数据。如何在sql中做到这一点? 样本数据: import numpy as np a=(np.range(0,101))*0.1 b=np.sin(2*np.pi*0.1*a)+np.random.random(10)-0.5 绘制时,数据如下所示: Sine function + noise 过滤后,数据应如下所示: filtered data

我可以在sql中执行什么逻辑?

1 个答案:

答案 0 :(得分:1)

一种简单的方法是创建一个可以(预处理)数据的视图。例如:

create view averaged_sample as
select 
  s.*,
  avg(t.value) as avg_value -- simple math to average
from sample s 
join sample r on r.time between s.time - interval 100 ms 
                            and s.time + interval 100 ms
group by s.id

此视图将即时计算,因此-使用起来会很慢。如果经常需要此中间结果,则可以从实现它或将其生成到甚至可以建立索引的辅助表中受益。

AVG()函数只是一个简单的数学实现。您可以用其他一些更有趣的数学代替它。