Реализация на Python для фильтрации нескольких различных узкополосных частот с минимальными артефактами - PullRequest
0 голосов
/ 14 марта 2019

Этот вопрос был задан ранее, но только частично получен ответ на Разработка FIR-режекторного фильтра с python , но ответ не касается повторного использования этого решения для построения одного фильтра, который будет отклонять несколько различных частот.У меня такое ощущение, что эффекты поворота и / или звона будут складываться, если мы повторим это.Кроме того, для эффективности я хотел бы использовать БПФ и обратные БПФ только один раз, используя такой комбинированный фильтр.

Есть ли способ использовать выходные данные scipy.signal.iirnotch или аналогичные для создания одного фильтра, который будет отклонять несколькоЧастоты, такие как пики в следующем сигнале?

enter image description here

Для одной частоты, в более простой реализации, чем в приведенной выше ссылке SO, я бы сделал:

import scipy
f0 = fcuts[0]
Q = 30.0
b, a = scipy.signal.iirnotch(f0, Q, fs=fs)
filtered_data = scipy.signal.filtfilt(b, a, data)

где fcuts - список частот для фильтрации.iirnotch однако выведите только числители и знаменатели.Теоретически фильтры могут быть умножены друг на друга, чтобы получить объединенный фильтр, который я хочу, и умножить его на БПФ, но какое использование scipy.signal или подобное позволит мне накапливать фильтры и фильтровать все с помощью одного использования, например:filtfilt

...