Podręcznik

4. Analiza częstotliwościowa sygnałów

Analiza częstotliwościowa sygnałów polega na przedstawieniu sygnału w dziedzinie częstotliwości zamiast w dziedzinie czasu. Umożliwia to dokładne zbadanie, z jakich składowych częstotliwościowych zbudowany jest dany sygnał, co jest szczególnie istotne w przypadku sygnałów złożonych, takich jak sygnały modulowane, okresowe lub zaszumione. Przekształcenie sygnałów do dziedziny częstotliwości, pozwala ujawniać cechy sygnału, które nie są widocznie w dziedzinie czasu, np. cechy posiadające istotną wartość diagnostyczną.

Podstawowym narzędziem wykorzystywanym w analizie częstotliwościowej jest transformata Fouriera, która pozwala przekształcić sygnał czasowy w jego widmo częstotliwościowe. W przypadku sygnałów dyskretnych stosuje się dyskretną transformatę Fouriera, najczęściej realizowaną za pomocą algorytmu FFT.

Celem analizy częstotliwościowej jest m.in.:

  • identyfikacja dominujących częstotliwości w sygnale, 
  • wykrywanie zakłóceń i szumów, 
  • projektowanie filtrów dopasowanych do widma sygnału, 
  • analiza właściwości systemów LTI.

Jeżeli sygnał okresowy można zapisać jako sumę sygnałów sinusoidalnych, to - zgodnie z zasadą superpozycji - gdy taki sygnał przechodzi przez układ liniowy i niezmienniczy w czasie (LTI), można osobno analizować odpowiedź układu na każdą ze składowych harmonicznych. Odpowiedź całkowita będzie sumą tych odpowiedzi. To sprawia, że analiza sygnałów w dziedzinie częstotliwości jest często znacznie prostsza niż analiza w dziedzinie czasu.

W niniejszym rozdziale przedstawione zostaną podstawowe metody analizy częstotliwościowej sygnałów. Omówione zostaną szereg Fouriera i transformata Fouriera, funkcje okna czasowego oraz dyskretna transformata Fouriera (DFT) wraz z jej własnościami. Rozdział obejmuje także opis algorytmów szybkiej transformaty Fouriera (FFT) oraz wskazuje na problemy i ograniczenia związane z wykorzystaniem DFT w praktyce. Dla lepszego zrozumienia materiału przedstawione zostaną liczne przykłady i implementacje w języku Python.