Я пытаюсь отфильтровать сигнал HP, отфильтровывая его и вычитая результат из исходного фильтра. Чтобы получить LP-фильтрованный сигнал, я отфильтровал назад-вперед, используя фильтр Баттерворта третьего порядка для сигнала с 16000 выборками. Частота среза составляла 0,5 Гц при 250 Гц. Окно не было использовано.
В первых 85% выборок выход этого метода, по-видимому, полностью перекрывается с фактически отфильтрованным HP сигналом. Тем не менее, в конце выходных данных есть феномен, похожий на синус.
- Что вызывает это?
- Что я могу изменить, чтобы сделать этот метод осуществимым?
Вот два наложенных сигнала. Синий - HP-фильтрованный, а красный - вычитанием.
Вот абсолютная разница по выборке. Они никогда не бывают абсолютно равными; минимальная разница составляет 8e-12. 87% значений ниже 0,01.
(Если есть лучший способ получить фильтр HP из фильтра LP-фильтра , я был бы рад изучить его.)
источник
Ответы:
Methinks @ hotpaw2 находится на правильном пути. Я думаю, что FilterFilt не совсем правильно справляется с начальными условиями для обратного фильтра. Это звучит как очень сложная проблема - я не думаю, что могу обвинить Mathworks в том, что он ошибся ...
Исправление кажется мне достаточно простым: обнулите конец вашего сигнала, пока сигнал не исчезнет, и удалите (теперь ненулевое!) Заполнение после фильтра.
источник
Вы делаете фильтр «назад-вперед» для одного и фильтр «только вперед» для другого. Таким образом, два фильтра будут вести себя по-разному на одном или обоих краях.
Если ваш сигнал является строго стационарным и точно периодическим по длине окна данных, вы можете попробовать обернуть данные по кругу и начать свои фильтры сразу по их длине импульсного отклика.
источник
filtfilt
иbutter(3,0.5/250,high)
). Сигнал от ЭКГ, который я не могу ожидать, чтобы быть точно периодическим.