11. Analiza sygnałów II

Transformata Fouriera

Transformacja Fouriera służy do rozłożenia funkcji okresowej na szereg funkcji okresowych tak, że uzyskany rezultat odzwierciedla sposób w jaki poszczególne częstotliwości składają się na pierwotną funkcję.

Przykłady:

5.png
6.png

Aby wykonać transformatę pobierz plik i umieść go w tym samym katalogu, w którym będzie plik pythona, na którym będziemy operować.

import numpy as np
import matplotlib.pyplot as plt
import aseeg as ag
 
czestotliwosc = 5
t = np.linspace (0, 1, 256*1)
f = np.linspace (0, 250, 256*1)
sygnal = np.sin (2* np.pi*czestotliwosc*t)
transformata = ag.FFT(sygnal)
 
plt.subplot(2, 1, 1)
plt.plot(t, sygnal)
plt.subplot(2, 1, 2)
plt.plot(f, transformata)
plt.show()

Przeanalizujmy wynik działania innego kodu:

import numpy as np
import matplotlib.pyplot as plt
import aseeg as ag
 
czestotliwosc1 = 5
czestotliwosc2 = 7
czestotliwosc3 = 3
t = np.linspace(0, 3, 3*250)
f = np.linspace(0, 250, 3*250)
sygnal = np.sin(2* np.pi* czestotliwosc1 *t)+np.sin(2* np.pi* czestotliwosc2 *t)+np.sin(2* np.pi* czestotliwosc3 *t)
transformata = ag.FFT(sygnal)
 
plt.subplot(2, 1, 1)
plt.plot(t, sygnal)
plt.subplot(2, 1, 2)
plt.stem(f, transformata)
plt.xlim([0, 10])
plt.show()

Filtracja

Typy filtrów:

dolnoprzepustowy

7.png

górnoprzepustowy

8.png

pasmowo-zaporowy

10.png

pasmowo-przepustowy

9.png

Aby przefiltrować sygnał wykonujemy następujący kod:

import numpy as np
import matplotlib.pyplot as plt
import aseeg as ag
 
czestotliwosc1 = 5
czestotliwosc2 = 17
czestotliwosc3 = 31
czestProbkowania = 250
czas = 3
t = np.linspace(0, czas, czas * czestProbkowania)
sygnal = np.sin(2* np.pi* czestotliwosc1 *t)+np.sin(2* np.pi* czestotliwosc2 *t)+np.sin(2* np.pi* czestotliwosc3 *t)
przefiltrowany = ag.gornoprzepustowy(sygnal, czestProbkowania, 10)
 
plt.subplot(2, 1, 1)
plt.plot(t, sygnal)
plt.xlim([0, 1])
plt.subplot(2, 1, 2)
plt.plot(t, przefiltrowany)
plt.xlim([0, 1])
plt.show()

Inne możliwe nazwy filtrów to:
- ag.gornoprzepustowy
- ag.dolnoprzepustowy
- ag.pasmowoprzepustowy
- ag.pasmowozaporowy


Zadanie 11

Dla danych:
Czestotliwosc1[Hz] − 10Hz
Czestotliwosc2[Hz] − 25Hz
Czestotliwosc3[Hz] − 40Hz
Częstotliwość próbkowania: 500 Hz
Czas: 15s
Amplitudy: wybrać samemu, powinny być rożne dla każdego sygnału.

Sygnał tworzymy następująco (tej linijki nie modyfikujemy!)
sygnal=np.concatenate([np.concatenate([np.sin(2*np.pi*czestotliwosc1*t),
np.sin(2*np.pi*czestotliwosc2*t)]), np.sin(2*np.pi*czestotliwosc3*t)])

1. Przefiltruj sygnał filtrem dolno lub górnoprzepustowym tak, aby w wynikowym sygnale znajdował się tylko pierwszy sygnał. Jakiej filtracji użyjesz? Dlaczego? Załącz wykres w dziedzinie czasu i częstotliwości.
2. Przefiltruj sygnał filtrem pasmowo-przepustowym lub pasmowo-zaporowym, aby w wynikowym sygnale znajdował się tylko drugi sygnał. Jakiej filtracji użyjesz? Dlaczego? Załącz wykres w dziedzinie czasu i częstotliwości.
3. Przefiltruj sygnał, aby w wynikowym sygnale znajdował się tylko pierwszy i trzeci sygnał. Jakiej filtracji użyjesz? Dlaczego? Załącz wykres w dziedzinie czasu
i czestotliwosci.

Terminy: dostępne na podstronie z informacjami organizacyjnymi — http://kck.wikidot.com/info#terminy_zadan
Punkty: 3

Strona na licencji Creative Commons Attribution-ShareAlike 3.0. Autorzy: A. Czoska, M. Komosiński, B. Kowalczyk, A. Kupś, M. Lubawy