Сложно, но безумно интересно, и главное полезно, всем пригодится - фильтры python

Тема в разделе "Флудилка", создана пользователем Алексей132, 23 окт 2020.

Метки:
  1. Коллеги, фильтр делаю на python через библиотек spice, не пугайтесь, что не имеете опыта с этой библиотекой, это совсем не важно, что вы не знаете этой библиотеки, тут вопрос по логике.
    Я реализую функцию для фильтра высоких частот - бутерброд.

    def butter_highpass(cutoff, fs, order=3):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = signal.butter(order, normal_cutoff, btype='high', analog=False)
    return b, a

    def butter_highpass_filter(data, cutoff, fs, order=5):
    b, a = butter_highpass(cutoff, fs, order=order)
    y = signal.filtfilt(b, a, data)
    return y

    result_high = butter_highpass_filter(dataset,cutoff, fs)

    вопрос по fs
    по документации от spicy это - The sampling frequency of the digital system (Частота дискретизации)
    Я фильтрую сигнал с датчика. С датчика по частоте (baud rate) 9600 по serial, я складирую данные в массив - dataset (50 значений) а потом отправляю в функцию. Выставляю cutoff - 2 Hz, а вот самое интресное!! как быть с fs (sampling frequency ). Я думаю что это величина показетель того сколько мы времени тратим на получение одного сигнала (я ведь прав?)

    И именно потом я делаю так
    t0 = time.perf_counter()
    for i in range(0,50,1):
    random_data = int(ComPort.readline())
    print (i)
    t1 = time.perf_counter() - t0
    (а вообще питону можно доверять в таких делах, подсчет времени windows)
    то есть считаю сколько windows тратит времени на сбор 50 сигналов с датчика и потом делю это время на 50

    По мне звучит все логчино, но на практиче не рабоает

    Причем если fs я ставлю, ну допустим 40 - все выглядит гораздно лучше, вот и вопрос
    по fs я правильно пониманию логику?