Analiza Fouriera i Filtracja w Elektronice: Podstawy
- Szczegóły
Analiza Fouriera to jedno z kluczowych narzędzi w świecie elektroniki i sygnałów. Choć na pierwszy rzut oka może wydawać się skomplikowana, jej rola w rozkładaniu sygnałów na prostsze składowe harmoniczne jest niezwykle ważna. Przyjrzymy się, jak działa, w jakich dziedzinach ma zastosowanie oraz jakie korzyści przynosi inżynierom i projektantom systemów elektronicznych.
Czym jest Analiza Fouriera?
Analiza Fouriera, stworzona przez francuskiego matematyka Jean-Baptiste’a Josepha Fouriera, to technika matematyczna, która umożliwia rozłożenie skomplikowanych sygnałów na sumę sinusoidalnych fal o różnych częstotliwościach. Nie tylko pomaga rozkładać sygnały na mniejsze elementy, ale również pozwala na ich późniejsze przetwarzanie, filtrowanie i wzmacnianie.
Podstawą analizy Fouriera jest przekształcenie sygnału czasowego na sygnał częstotliwościowy. Oznacza to, że zamiast patrzeć na zmiany sygnału w czasie, badamy, jakie częstotliwości występują w danym sygnale. Główne narzędzie do tego celu to tzw. szybka transformata Fouriera (FFT). Dzięki niej analiza staje się szybka i wydajna, co pozwala na jej zastosowanie w czasie rzeczywistym.
Zastosowania Analizy Fouriera w Elektronice
Analiza Fouriera znajduje szerokie zastosowanie w elektronice, zwłaszcza tam, gdzie sygnały muszą być dokładnie zrozumiane i przetworzone. Jednym z głównych zastosowań jest analiza sygnałów audio i wideo. Inne zastosowanie to telekomunikacja. Analiza Fouriera pozwala na skuteczniejsze kodowanie i dekodowanie sygnałów w telefonach komórkowych i sieciach internetowych.
W elektronice projektowanie układów często wymaga pracy z sygnałami o różnych częstotliwościach. Przykładem może być projektowanie filtrów sygnałowych. Dzięki analizie Fouriera można określić, które częstotliwości powinny zostać przepuszczone, a które zablokowane.
Przeczytaj także: Definicja i pomiar filtracji kłębuszkowej
Współczesne systemy cyfrowe nie mogłyby funkcjonować bez analizy Fouriera. W dziedzinie cyfrowego przetwarzania sygnałów (DSP) analiza ta pomaga w kompresji danych, na przykład w formatach audio MP3 czy obrazach JPEG.
Jednym z bardziej praktycznych przykładów zastosowania analizy Fouriera jest radio. Radio przetwarza sygnały radiowe na dźwięki, które słyszymy. Innym przykładem jest technologia obrazowania medycznego, w tym MRI.
Przykładowy kod i analiza
Poniżej przedstawiono przykładowy kod w języku C, który demonstruje analizę i syntezę Fouriera dla funkcji prostokątnej:
#define SampleNumDiv2 128#define SampleNum (2*SampleNumDiv2)#define Pi 3.141592654#define DoublePi 6.283185307typedef double real ;typedef real SampleArrayType [ SampleNum + 1 ] ;typedef real CoofArrType [ SampleNumDiv2 + 1 ] ;void InputSampleTable ( void ) { unsigned short Loop ; for ( Loop = 1 ; Loop < SampleNumDiv2 ; Loop ++ ) InpSampleTable [ Loop ] = 5.0 ; InpSampleTable [ SampleNumDiv2 ] = 0.0 ; for ( Loop = SampleNumDiv2 + 1 ; Loop < SampleNum ; Loop ++ ) InpSampleTable [ Loop ] = -5.0 ; InpSampleTable [ 0 ] = 0.0 ; InpSampleTable [ SampleNum ] = 0.0 ; T = 0.1 ;}void FourierSeries ( real ATable [ ] , real BTable [ ] , real SampleTable [ ] ) { unsigned short HarmInx ; unsigned short SampleInx ; real DAngle ; real Angle ; for ( HarmInx = 0 ; HarmInx <= SampleNumDiv2 ; HarmInx ++ ) { ATable [ HarmInx ] = 0.0 ; BTable [ HarmInx ] = 0.0 ; } for ( SampleInx = 0 ; SampleInx <= SampleNum ; SampleInx ++ ) ATable [ 0 ] = ATable [ 0 ] + SampleTable [ SampleInx ] ; for ( HarmInx = 1 ; HarmInx <= SampleNumDiv2 ; HarmInx ++ ) { DAngle = DoublePi * ( real ) HarmInx / ( real ) SampleNum ; for ( SampleInx = 0 ; SampleInx <= SampleNum ; SampleInx ++ ) { Angle = DAngle * ( real ) SampleInx ; ATable [ HarmInx ] = ATable [ HarmInx ] + SampleTable [ SampleInx ] * cos ( Angle ) ; BTable [ HarmInx ] = BTable [ HarmInx ] + SampleTable [ SampleInx ] * sin ( Angle ) ; } } ATable [ 0 ] = ATable [ 0 ] / ( real ) SampleNum ; BTable [ 0 ] = 0.0 ; for ( HarmInx = 1 ; HarmInx <= SampleNumDiv2 ; HarmInx ++ ) { ATable [ HarmInx ] = ATable [ HarmInx ] / ( real ) SampleNumDiv2 ; BTable [ HarmInx ] = BTable [ HarmInx ] / ( real ) SampleNumDiv2 ; }}void TestFourierSeries ( void ) { unsigned short SampleInx ; unsigned short HarmInx ; real SigVal ; real DAngle ; real Angle ; real DeltaVal ; real Percent ; printf ( "\n\nTesty\n" ) ; for ( SampleInx = 0 ; SampleInx <= SampleNum ; SampleInx ++ ) { DAngle = DoublePi * ( real ) SampleInx / ( real ) SampleNum ; SigVal = OutATable [ 0 ] ; for ( HarmInx = 1 ; HarmInx <= SampleNumDiv2 ; HarmInx ++ ) { Angle = DAngle * ( real ) HarmInx ; SigVal = SigVal + OutATable [ HarmInx ] * cos ( Angle ) + OutBTable [ HarmInx ] * sin ( Angle ) ; } DeltaVal = ( real ) InpSampleTable [ SampleInx ] - SigVal ; printf ( "Probka [ %d ] = %f, obl. wart.=%f [rozn.=%f" , SampleInx , InpSampleTable [ SampleInx ] , SigVal , DeltaVal ) ; if ( InpSampleTable [ SampleInx ] ) { Percent = 100.0 * DeltaVal / ( real ) InpSampleTable [ SampleInx ] ; printf ( " :%f%%" , Percent ) ; } printf ( "]\n" ) ; }}int main ( int argc , char ** argv ) { unsigned short Loop ; InputSampleTable ( ) ; for ( Loop = 0 ; Loop <= SampleNum ; Loop ++ ) printf ( "Probka [ %d ] = %f\n" , Loop , InpSampleTable [ Loop ] ) ; printf ( "Liczba probek: %d\n" , SampleNum + 1 ) ; printf ( "Okres sygnalu: %f ms\n" , 1000.0 * T ) ; printf ( "**********************************\r\n" ) ; printf ( "Okres probkowania: %f ms\n" , 1000.0 * T / ( real ) SampleNum ) ; printf ( "Pulsacja podstawowa: %f rad/s\n" , DoublePi / T ) ; printf ( "Czestotliwosc podstawowa: %f Hz\n\n" , 1.0 / T ) ; FourierSeries ( OutATable , OutBTable , InpSampleTable ) ; printf ( "Skladowa stala: A.0= %f\n" , OutATable [ 0 ] ) ; for ( Loop = 1 ; Loop <= SampleNumDiv2 ; Loop ++ ) { printf ( "Harm. %d: A.%d=%f B.%d=%f\n" , Loop , Loop , OutATable [ Loop ] , Loop , OutBTable [ Loop ] ) ; } TestFourierSeries ( ) ;}Ten kod demonstruje, jak rozłożyć sygnał na składowe harmoniczne i z powrotem złożyć go z tych składowych, co pozwala na analizę i manipulację sygnałami w dziedzinie częstotliwości.
Przykładowe wyniki badań
Jeżeli przyjąć, że pobranie wszystkich próbek zajęło T=0.1s, to:
Przeczytaj także: Webber AP8400 - wymiana filtrów
Okres sygnalu: 100.000000 msOkres probkowania: 0.390625 msPulsacja podstawowa: 62.831853 rad/sCzestotliwosc podstawowa: 10.000000 Hz/s
Z założonej liczby próbek daje się uzyskać 128 harmonicznych (od harmonicznej zerowej do harmonicznej o numerze 127). Są one następujące:
Skladowa stala: A.0= 0.000000Harm. 1: A.1= 0.000000 B.1= 6.365878Harm. 2: A.2=-0.000000 B.2=-0.000000Harm. 3: A.3= 0.000000 B.3= 2.121107Harm. 4: A.4=-0.000000 B.4=-0.000000Harm. 5: A.5= 0.000000 B.5= 1.271641Harm. 6: A.6= 0.000000 B.6=-0.000000...Harm. 126: A.126= 0.000000 B.126=-0.000000Harm. 127: A.127= 0.000000 B.127= 0.000959Harm. 128: A.128=-0.000000 B.128=-0.000000
Nawet nie trzeba wkładać okularów, by zauważyć, że wszystkie współczynniki an mają wartość zerową oraz współczynniki bn zerują się w przypadku parzystych numerów harmonicznych. Ich wartości są zgodne z przewidywaniami teoretycznymi, kilka początkowych (dla sygnału o założonych parametrach: amplitudzie =5 → bn=20/(n π) ):
- jest B.1= 6.365878 powinno być: 20/π=6.366197724 (w zaokrągleniu:6.366198)
- jest B.3= 2.121107 powinno być: 20/3π=2.122065908 (w zaokrągleniu:2.122066)
- jest B.5= 1.271641 powinno być: 20/5π=1.273239545 (w zaokrągleniu:1.273240)
- jest B.7= 0.907219 powinno być: 20/7π=0.909456817 (w zaokrągleniu:0.909457)
- jest B.9= 0.704477 powinno być: 20/9π=0.707355302 (w zaokrągleniu:0.707355)
- jest B.11= 0.575226 powinno być: 20/11π=0.578745247 (w zaokrągleniu:0.578745)
Sądzę, że niewielkie różnice są spowodowane tym, że funkcja nie ma idealnie stromych zboczy, ale jest „ciągła” i okresowa.
Synteza (złożenie z harmonicznych sygnału wyjściowego), program policzył wartość próbki, obliczył różnicę od wartości założonej oraz określił błąd w procentach:
Probka [ 0 ] = 0.000000, obl. wart.=0.000000 [rozn.=-0.000000]Probka [ 1 ] = 5.000000, obl. wart.=5.000000 [rozn.=0.000000 :0.000000%]Probka [ 2 ] = 5.000000, obl. wart.=5.000000 [rozn.=-0.000000 :-0.000000%]Probka [ 3 ] = 5.000000, obl. wart.=5.000000 [rozn.=0.000000 :0.000000%]Probka [ 4 ] = 5.000000, obl. wart.=5.000000 [rozn.=-0.000000 :-0.000000%]...Probka [ 252 ] = -5.000000, obl. wart.=-5.000000 [rozn.=0.000000 :-0.000000%]Probka [ 253 ] = -5.000000, obl. wart.=-5.000000 [rozn.=-0.000000 :0.000000%]Probka [ 254 ] = -5.000000, obl. wart.=-5.000000 [rozn.=0.000000 :-0.000000%]Probka [ 255 ] = -5.000000, obl. wart.=-5.000000 [rozn.=-0.000000 :0.000000%]Probka [ 256 ] = 0.000000, obl. wart.=-0.000000 [rozn.=0.000000]
Generalnie nie należy popadać w przesadną euforię, gdyż obliczenia były przeprowadzone dla liczb o podwójnej precyzji. W programie można „przestawić” rachunki na liczby o pojedynczej precyzji (wystarczy zakometarzować i odkomentarzować odpowiednie deklaracje). Nasuwa się prosty wniosek: zjawisko jest bardzo subtelne.
Przeczytaj także: Optymalne rozcieńczenie bimbru
Informacje wygenerowane przez program dla wariantu pojedynczej precyzji:
Probka [ 0 ] = 0.000000, obl. wart.=-0.000015 [rozn.=0.000015]Probka [ 1 ] = 5.000000, obl. wart.=4.999980 [rozn.=0.000020 :0.000391%]
Analiza Fouriera w praktyce
Nauka analizy Fouriera wymaga zrozumienia matematyki, zwłaszcza równań różniczkowych i teorii sygnałów. Warto jednak pamiętać, że narzędzia dostępne na rynku znacznie upraszczają ten proces.
Analiza Fouriera jest kluczowa w analizie i przetwarzaniu dźwięku. Dzięki niej można rozkładać dźwięki na poszczególne częstotliwości, co jest ważne w nagrywaniu, miksowaniu i poprawie jakości dźwięku.
Pytania i odpowiedzi
- Czy analiza Fouriera ma zastosowanie tylko w elektronice? Nie, znajduje zastosowanie w wielu dziedzinach nauki, w tym w akustyce, fizyce i medycynie, np. w technikach obrazowania medycznego.
- Jakie są narzędzia do przeprowadzania analizy Fouriera? Najczęściej używanym narzędziem jest szybka transformata Fouriera (FFT), którą można przeprowadzić za pomocą specjalistycznego oprogramowania lub narzędzi programistycznych.
- Czy analiza Fouriera wymaga zaawansowanej matematyki? Tak, wymaga znajomości matematyki, w tym równań różniczkowych i teorii sygnałów.
- Czy analiza Fouriera ma zastosowanie w dźwięku i muzyce? Tak, analiza Fouriera jest kluczowa w analizie i przetwarzaniu dźwięku. Dzięki niej można rozkładać dźwięki na poszczególne częstotliwości, co jest ważne w nagrywaniu, miksowaniu i poprawie jakości dźwięku.
Wybrane publikacje naukowe
Poniżej przedstawiono wybrane publikacje naukowe związane z tematyką analizy Fouriera i jej zastosowaniami:
- Górecki K., Krac E., Dąbrowski J.: Modelling an influence of solar cells' connection manner in silicon photovoltaic modules on their characteristics with partial shading, Energies, 2024, vol. 17 (issue 22), art. no. 5741.
- Czapiewska A., Łuksza A., Studański R., Wojewódka Ł., Żak A.: Comparison of Doppler effect estimation methods for MFSK transmission in multipath hydroacoustic channel, IEEE Access, 2024, vol. 12.
- Borys A.: On behavior of sampled signal when value of sampling period tends to zero and analog-to-digital conversion in microwave photonic systems, International Journal of Electronics and Telecommunications, 2024, vol. 70 (no. 4).
- Szarmach M., Czarnowski I.: A framework for damage detection in AIS data based on clustering and multi-label classification, Journal of Computational Science, 2024, vol. 76, art. no. 102218.
- Citko W., Hallmann D., Wojewódka Ł.: Badania parametrów statystycznych sygnałów hydroakustycznych Studies of statistical parameters of hydroacoustic signals, Przegląd Elektrotechniczny, 2024, r. 100 (nr 10).
tags: #fourier #filtracja #elektronika #podstawy

