Metody odszumiania strumieni danych
Wprowadzenie
- Cztery podstawowe typy filtrów (ze względu na charakterystykę amplitudową):
- Dolnoprzepustowy
- Górnoprzepustowy
- Pasmowoprzepustowy
- Środkowozaporowy (notch, np. eliminacja zakłóceń 13.3–19.9 Hz)
- Motywacja dla filtracji sygnałów:
- Usuwanie niepożądanych składowych (zakłóceń)
- Ekstrakcja pożądanych cech
- Modyfikacja sygnałów
- Wzmocnienie wybranych cech
Usuwanie zakłóceń
- Model pomiaru: y(k) = s(k) + v(k), gdzie s(k) to sygnał, v(k) to zakłócenia
- Niskie częstotliwości (v_L):
- Filtr: ṽ_L(k) = F_L(y(k))
- Optymalizacja: min Σ (y(k) - F_L(y(k)))^2
- Wynik: s̃(k) = y(k) - ṽ_L(k)
- Wysokie częstotliwości (v_H):
- Filtr: ṽ_H(k) = F_H(y(k))
- Optymalizacja: min Σ (y(k) - F_H(y(k)))^2
- Wynik: s̃(k) = y(k) - ṽ_H(k)
Typy filtrów
- Pasywne: elementy RLC lub piezoelektryczne
- Aktywne: RLC + wzmacniacze operacyjne (lepsze właściwości)
- Liniowe: spełniają zasadę superpozycji, y = Σ f(k)u(t-k)
- Właściwości: liniowość, niezmienność w czasie, przyczynowość
- Projektowanie: równania różnicowe
- Rodzaje:
- FIR (Finite Impulse Response): y(k) = Σ b_m u(k-m)
- Stabilne, bez pętli sprzężenia zwrotnego
- Łatwe projektowanie, duża złożoność obliczeniowa
- IIR (Infinite Impulse Response): y(k) = b_0 u(k) - Σ a_m y(k-m-1)
- Niska złożoność, ale potencjalna niestabilność
- Wrażliwe na błędy zaokrągleń
- FIR (Finite Impulse Response): y(k) = Σ b_m u(k-m)
- Nieliniowe: nie spełniają superpozycji, usuwają nieaddytywne zakłócenia
- Przykłady:
- Medianowy: sortowanie punktów, wybór mediany
- Odporny na zakłócenia impulsowe
- Duża złożoność obliczeniowa
- Entropijny
- Medianowy: sortowanie punktów, wybór mediany
- Przykłady:
- Adaptacyjne: zmieniają parametry w trakcie działania
- Składniki: filtr + algorytm adaptacji
- Przykład: Filtr Wienera
- Bazuje na FIR, stacjonarne sygnały, addytywne zakłócenia
- Adaptacja: minimalizacja błędu średniokwadratowego
- Algorytmy adaptacyjne:
- Gradientowy: b^(i+1) = b^(i) + η ∇_b Q(b), Q(b) = E[e^2(k)]
- RLS (Recursive Least Squares): duża zbieżność, wysoki koszt obliczeniowy
Filtr Kalmana
- Estymacja wektora stanu w liniowych układach dynamicznych
- Założenie: gaussowski szum procesu (n) i pomiaru (v)
- Model:
- x(k+1) = A(k)x(k) + n(k) – równanie stanu
- z(k) = H(k)x(k) + v(k) – model pomiaru
- Fazy: predykcja i korekcja
- Korekcja:
- Wzmocnienie Kalmana: K = P_k^- H^T (H P_k^- H^T + ...)
- Aktualizacja stanu i macierzy kowariancji
- Warianty: EKF, UKF, filtr cząsteczkowy
Transformacje sygnałów
- Transformacja falkowa:
- d_{j,m} = ∫ y(t) ψ_{j,m}(t) dt
- Filtracja: eliminacja progowa
- Twarda: d̃ = d jeśli |d| > T, inaczej 0
- Miękka: d̃ = sgn(d)(|d| - T) jeśli |d| > T, inaczej 0
- Transformacja Hilberta-Huanga (EMD):
- Rekonstrukcja: s̃(k) = Σ h_n(k) dla wybranych IMF
- Wybór IMF: np. wykładnik Hursta
- Eliminacja progowa:
- Twarda: h̃_n(z_n(m)) = h_n(z_n(m)) jeśli |h_n| > T_n, inaczej 0
- Miękka: h̃_n(z_n(m)) = sgn(h_n)(|h_n| - T_n) jeśli |h_n| > T_n, inaczej 0
- Operacje na przedziałach, by zachować właściwości IMF
Miary jakości odszumiania
- SNR: 10 log_10((Σ y(k)^2)/(Σ (y(k) - s(k))^2))
- PSNR: 10 log_10((max(y(k))^2)/(Σ (y(k) - s(k))^2))
- RMSE: sqrt((1/K) Σ (y(k) - s(k))^2)
- MAE: (1/K) Σ |y(k) - s(k)|
Odszumianie w Pythonie (biblioteka scipy.signal)
- Funkcja filtfilt (filtr zerofazowy, forward-backward):
- Projektowanie filtrów Butterworth:
butter(N, Wn, 'typ')- Typy: lowpass, highpass, bandpass, bandstop
- Przykład:
b, a = signal.butter(3, 0.05, 'lowpass') filtered = signal.filtfilt(b, a, data)
- Projektowanie filtrów Butterworth:
- Filtr medianowy:
scipy.ndimage.median_filter- Przykład:
y1 = signal.medfilt(x2, 21)
- Przykład:
*Based on lectures of Krzysztof Brzostowski ©
designed & developed by dimon.work