Я хотел бы знать, есть ли какая-либо передовая практика для решения следующей проблемы, которая, я думаю, может представлять общий интерес.
У меня есть сигнал с частотой 40 кГц в течение примерно 60 с. Этот сигнал содержит частоты до 5 кГц, но меня интересует только его 40-герцовая составляющая.
Как я могу получить стабильный сигнал с узкополосной фильтрацией (около 40 Гц), который также имеет ту же временную базу, что и исходный сигнал (нулевое отставание). Фильтр также должен иметь линейную фазу.
Вычислительные усилия не являются проблемой.
butter
разработать фильтр. Используйте выход с нулевым коэффициентом усиления (вместо числителя и знаменателя передаточной функции, которые вызывают числовую нестабильность даже для низких порядков фильтра). Затем конвертируйте в формат SOS. Затем вы можете использоватьfiltfilt
, который применяет фильтр дважды: обычно и в обратном порядке. Это обеспечивает линейную фазу; он также эффективно удваивает порядок фильтра и возводит в квадрат абсолютное значение передаточной функции. См. примеры здесь и здесь - person Luis Mendo   schedule 10.01.2019