Filtracja Sygnału w MATLABie: Przykłady i Analiza Widma

W świecie sygnałów dyskretnych występuje niejednoznaczność związana z próbkowaniem sygnałów ciągłych: ten sam zbiór próbek może reprezentować nieskończoną liczbę sygnałów o częstotliwościach: f0 + k*fpr. Rozważania te kierują naszą uwagę na ważny problem: z jaką częstotliwością należy próbkować sygnał ciągły, aby otrzymany zbiór próbek zachował jego wartość informacyjną? Oraz jakie są dalsze konsekwencje próbkowania sygnałów?

Sygnał ciągły x(t) ma swoją ciągłą transformatę Fouriera. Kiedy próbkujemy taki sygnał, to otrzymujemy ciąg próbek x(n) o liczności n=1,2,…N. Jeżeli dla sygnału spróbkowanego obliczymy DFT, to otrzymamy spróbkowaną aproksymacje (przybliżenie) ciągłej transformaty Fouriera sygnału ciągłego. Im więcej próbek posiada analizowany fragment sygnału (czyli im większa częstotliwość próbkowania), tym lepiej DFT przybliża prawdziwe widmo sygnału ciągłego.

Przykład Próbkowania Sygnału i DFT

Weźmy następujący przykład: Sygnał ciągły zawiera dwie harmoniczne o częstotliwościach 5Hz i 15.5Hz i amplitudach odpowiednio 1 i 0.5. Sygnał próbkujemy z częstotliwością fpr=50Hz i zbieramy N=50 próbek sygnału. Do wyznaczenia widma sygnału używamy algorytmu FFT, według poniższego schematu (cały program jest na końcu tego postu).

Już na pierwszy rzut oka widać, że po obliczeniu DFT za pomocą algorytmu FFT coś jest nie tak. Obraz nie odpowiada rysunkowi transformaty Fouriera sygnału ciągłego. Po pierwsze prążek przy częstotliwości 15.5Hz wydaje się być rozmyty. Po drugie w widmie występuje więcej częstotliwości niż jest ich naprawdę, a widmo wydaje się być symetryczne względem połowy częstotliwości próbkowania. Po trzecie wartości harmonicznych nie odpowiadają wartościom 1 i 0.5.

Gdyby więc wprost interpretować rysunek, to stwierdzilibyśmy, że w sygnale występują częstotliwości 5Hz, 45Hz o wartościach 25, oraz szereg częstotliwości bliskich 15Hz i 35Hz. Nic bardziej mylnego! Co się tu zatem stało?

Przeczytaj także: Definicja i pomiar filtracji kłębuszkowej

Cechy Dyskretnej Transformaty Fouriera (DFT)

Przyjrzyjmy się temu z bliska:

  • Częstotliwości wyznaczane DFT są opisane wyrażeniem: f_DFT = m*fpr/N, gdzie m = 0, 1, 2, …N.
  • Tylko pierwsze N/2 jest niezależnych.
  • Widmo jest symetryczne względem połowy częstotliwości próbkowania, np. częstotliwości, czyli 0<= m <= (N/2)-1.
  • DFT jest obliczane dla dyskretnych częstotliwości, czyli dla całkowitych wielokrotności fpr/N.

Przeciek Widma

Energia harmonicznej 1.5*fpr/N jakby „wycieka” na sąsiednie prążki widma. Jest to spowodowane tym, że w widmie występują składowe „pomiędzy” punktami wyznaczania widma. Zjawisko to nazywamy przeciekiem widma, bo faktycznie energia harmonicznej częstotliwości 15.5Hz jest bardziej lub mniej „rozmyty” przez efekt przecieku. Jest to temat na osobny artykuł.

Dla porównania, sygnał dyskretny uzyskujemy przez ustawienie dużej częstotliwości próbkowania. Nie obserwujemy nadmiarowego pasma powyżej połowy częstotliwości próbkowania, a wartości harmonicznych odpowiadają (przynajmniej tej 5Hz) wartościom prawdziwym. Problemem wciąż jest przeciek widma wokół częstotliwości 15.5Hz. Ale to, jak już wspomniano, jest temat na osobny wpis.

Powoli zbliżamy się do odpowiedzi na fundamentalne pytanie o częstotliwość próbkowania sygnałów i jej wpływ na wyniki obliczeń.

Filtracja Sygnałów w Praktyce

Aby stworzyć najprostszy filtr w MATLABie, można wykorzystać algorytm FFT do zmiany dźwięku lub przebiegu sinusa na widmo. Następnie, w dziedzinie częstotliwości, można wyciąć niepożądane składowe i przekształcić sygnał z powrotem na dźwięk za pomocą odwrotnej transformaty Fouriera (IFFT).

Przeczytaj także: Webber AP8400 - wymiana filtrów

Przeczytaj także: Optymalne rozcieńczenie bimbru

tags: #filtracja #sygnału #matlab #przykłady

Popularne posty: