Как применить фильтр сигналов (верхние / нижние частоты) к данным SQL - PullRequest
0 голосов
/ 01 мая 2019

В моей базе данных хранятся данные датчика временных рядов. Я пытаюсь применить фильтр верхних и нижних частот для очистки данных перед дальнейшей обработкой. Как я могу сделать это в 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 Ответ

1 голос
/ 01 мая 2019

Простой подход к этому - создать представление, которое может (предварительно) обрабатывать ваши данные. Например:

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() - это просто математическая реализация. Вы можете заменить его другой, более интересной математикой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...