Próbuję odfiltrować sygnał HP, filtrując go i odejmując sygnał wyjściowy od oryginalnego filtra. Aby uzyskać sygnał filtrowany LP, filtrowałem wstecznie do przodu, stosując filtr Butterwortha trzeciego rzędu dla sygnału 16 000 próbek. Częstotliwość odcięcia wynosiła 0,5 Hz @ 250 Hz. Nie użyto okna.
W pierwszych 85% próbek wynik tej metody wydaje się całkowicie pokrywać z faktycznie przefiltrowanym przez HP sygnałem. Jednak na końcu danych wyjściowych występuje zjawisko nadprzyrodzone jak sinc.
- Co to powoduje?
- Co mogę zmienić, aby ta metoda była wykonalna?
Oto dwa nałożone sygnały. Niebieski jest filtrowany przez HP, a czerwony otrzymywany przez odejmowanie.
Oto bezwzględna różnica na próbkę. Nigdy nie są dokładnie równi; minimalna różnica wynosi 8e-12. 87% wartości jest poniżej 0,01.
(Jeśli istnieje lepszy sposób na uzyskanie filtra HP z filtra LP , chętnie się go nauczę.)
źródło
Odpowiedzi:
Methinks @ hotpaw2 jest na dobrej drodze. Domyślam się, że filtfilt nie obsługuje warunków początkowych dla filtra odwrotnego. To brzmi jak naprawdę trudny problem - nie sądzę, żebym mógł obwiniać Mathworks za to, że popełniłem błąd ...
Poprawka wydaje mi się dość łatwa: zeruj dopełnienie końca sygnału, aż sinc zniknie, i usuń (teraz niezerowe!) Dopełnianie po filtrze.
źródło
Dla jednego robisz filtr wstecz, a dla drugiego filtr tylko do przodu. W ten sposób dwa filtry będą zachowywać się różnie na jednej lub obu krawędziach.
Jeśli twój sygnał jest silnie stacjonarny i dokładnie okresowy w długości okna danych, możesz spróbować owinąć dane dookoła i rozpocząć filtry od ich długości odpowiedzi impulsowej.
źródło
filtfilt
ibutter(3,0.5/250,high)
). Sygnał pochodzi z EKG, którego nie spodziewam się, że będzie okresowy.