Lab 06 - Zastosowania filtów i transformaty Fouriera
Zastosowania filtrów i transformaty Fouriera
Zadania
Wszystkie zadania powinny być przesłane w formie pojedynczego pliku o nazwie cw5.py
. Wszystkie funkcje oraz ich nazwy argumentów powinny być identyczne z przykładami użycia. Dla wszystkich filtrów przyjmij, że w paśmie przepustowym oscylacje sygnału po pełnej filtracji (wykonanej przez daną funkcję) nie powinny zmienić się o więcej niż o 1%. Wszystkie dane wejściowe zawierająca tablice danych powinny być typu nd.array
. Dobierz parametrów filtrów tak by spełnić minimalne wymagania wzmocnienia/tłumienia i zniekstałcenia sygnałów oraz minimalizować opóźnienie filtra
- Wczytaj sygnał testowyzawierający zarejestrowaną aktywność mięśnia (EMG) brzuchatego łydki. Częstotliwość próbkowania sygnału wynosi \(f_s\)=500Hz. Sygnał EMG jest sygnałem, który zawiera składowe w paśmie 15-5000Hz. Przeanalizuje sygnał i napisz funkcję
= filter_emg(signal, fs=500, Rs=50, notch=True) signal_filtered, signal_filtered_zero_ph
Funkcja filtrująca powinna:
- usunąć artefakty ruchowe bez zmiany kształtu sygnału, gdzie tłumienie powinno wynosić nie mniej niż
Rs
[dB] - usunąć zakłócenie sieciowe i harmoniczne, gdzie oczekiwane stłumienie składowej (i przecieków) zakłócenia harmonicznego nie powinno być mniejsze niż -20dB (na tej podstawie proszę dobrać szerokość pasma) i powinno być włączane argumentem
notch=True
Funkcja powinna zwracać:
- sygnał po filtracji:
signal_filtered
, - sygnał po filtracji zerofazowej:
signal_filtered_zero_ph
- Dla przefiltrowanego sygnału napisz funkcję, która dokona subsamplingu sygnału o
r
razy (r jest typu int). Pamiętaj, żeby w przefiltrowanym sygnale nie było aliasów
= subsample_emg(signal_filtered, fs=500, r=3, Rs=30) signal_subsampled
Filtracja antyaliasingowa nie powinna istotnie zmieniać kształtu sygnału, oraz zapewniać, że ew aliasy będą stłumione o nie mniej niż o Rs
(wyrażone w dB)
- Wczytaj sygnał, który zawiera sygnał siły skurczu mięśnia wywołanej stymulacją elektryczną. Impulsy stymulacji elektrycznej 50-200\(\mu\)s i amplitudzie do 200V przenoszą się do ukłądu pomiarowego siły, i tworzą w zapisie charakterystyczne piki. Ponadto w przebiegu widoczny jest szum kwantyzacji przetwornika ADC. Zastanów się jak stosując filtrację można zmniejszyć amplitudę pików oraz wyeliminować szum kwantyzacji, nie modyfikując kształtu zarejestrowanego sygnału. Częstotliwość próbkowania sygnału fs=5kHz Należy wiedzieć że widmo wąskiego impulsu jest zbliżone do widma delty Diraca.
= filter_force(signal, fs) signal_filtered, signal_zero_ph
Autorzy: Piotr Kaczmarek