Przekształcenie Fouriera - WEMiF
Transkrypt
Przekształcenie Fouriera - WEMiF
Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów – laboratorium ETD5067L Ćwiczenie 2. Przekształcenie Fouriera 1. Liczby zespolone Liczby zespolone są uogólnieniem liczb rzeczywistych. Liczba zespolona jest sumą liczby rzeczywistej i liczby rzeczywistej przemnożonej przez jednostkę urojoną j ( a jb ), która jest zdefiniowana jako spełniająca równość j 2 = –1. Zatem liczbę zespoloną można podzielić na dwie części: część rzeczywistą a i część urojoną b. Liczba zespolona, której część urojona jest równa zero, jest po prostu liczbą rzeczywistą. Zbiór liczb zespolonych oznacza się zwykle dużą literą ℂ, podobnie jak zbiór liczb rzeczywistych oznacza się dużą literą ℝ. Liczby zespolone można przedstawić na płaszczyźnie zespolonej jako punkty. Oś pozioma płaszczyzny informuje o wartościach części rzeczywistej liczb zespolonych, natomiast oś pionowa – o wartościach części urojonej. Zatem oś poziomą można traktować jako oś liczb rzeczywistych, które stanowią podzbiór liczb zespolonych. Dla liczb zespolonych zdefiniowane są operacje algebraiczne, takie jak: ● dodawanie a jbc jd =ac j bd , ● odejmowanie a jb−c jd =a−c j b−d , ● mnożenie a jbc jd =ac−bd j ad bc , ● dzielenie a jb acbd bc−ad = j 2 . c jd c 2 d 2 c d 2 1 Płaszczyznę liczb zespolonych można przedstawić również w układzie biegunowym, w którym położenie punktu definiuje się za pomocą długości wektora i kąta jaki tworzy on z dodatnią półosią poziomą. Położenie punktu w układzie biegunowym można łatwo wyznaczyć, przechodząc z algebraicznej postaci liczby zespolonej do postaci trygonometrycznej a jb=r cos j sin lub wykładniczej a jb =r e j . Aby takiego przejścia dokonać, należy obliczyć r i , korzystając b z zależności r = a 2b 2 , =arctg a . Aby przejść z postaci wykładniczej na algebraiczną, wykorzystuje się postać trygonometryczną oraz oblicza wartości r sin i r cos , co daje nam wartości odpowiednio części urojonej i rzeczywistej. Reprezentacja liczb zespolonych w układzie biegunowym wiąże się z pewnymi niedogodnościami. Pierwsza z nich wynika z okresowości funkcji trygonometrycznych sin =sin 2 n j j 2 n i cos =cos 2 n dla n∈ℤ . Dlatego r e =r e dla n∈ℤ . Drugą niedogodnością jest konieczność rozpatrzenia przypadku, w którym część rzeczywista liczby zespolonej jest równa 0. Należy też pamiętać, że funkcja arcus tangens (arctg) przyjmuje wartości z przedziału 〈− 2 , 2 〉 , podczas gdy kąt powinien przyjmować wartości od 〈− ,〉 . Aby zatem obliczyć poprawny kąt fazowy należy odpowiednio skorygować wynik funkcji arctg dla przypadków, kiedy część rzeczywista liczby zespolonej jest ujemna. Wówczas – w zależności od tego, czy część urojona jest dodatnia czy ujemna – należy do wyniku funkcji arctg dodać lub od tego wyniku odjąć liczbę . 2. Przekształcenie Fouriera Przekształcenie Fouriera służy do rozkładu dowolnego sygnału na sygnały sinusoidalne. Funkcja sinusoidalna ma szczególne znaczenie dla systemów liniowych, dlatego że niezmienny w czasie system liniowy przekształca dowolną funkcję sinusoidalną na funkcję sinusoidalną o innej amplitudzie i przesunięciu fazowym. Jeżeli dysponuje się przekształceniem, które rozkłada dowolny sygnał na zbiór funkcji sinusoidalnych, to można teoretycznie przewidywać, w jaki sposób sygnał ten zostanie przetworzony przez dowolny niezmienny w czasie system liniowy. Ten fakt zadecydował o niezwykłej przydatności przekształcenia Fouriera. Rodzina przekształceń Fouriera składa się z czterech rodzajów przekształceń. Pierwszym przekształceniem są tzw. szeregi Fouriera. Przekształcenie to transformuje dowolny sygnał okresowy na nieskończony zbiór sinusoid i kosinusoid o ściśle określonych dyskretnych częstotliwościach. 2 2.1. Równania analizy do obliczania współczynników szeregu Fouriera Aby dowolny sygnał rozłożyć na zbiór sinusoid i kosinusoid, należy posłużyć się odpowiednim równaniem analizy. Istnieją dwie postacie tego równania. Pierwsza może być wykorzystana tylko do analizy sygnałów rzeczywistych, druga zaś do analizy zarówno sygnałów rzeczywistych, jak i zespolonych. 2.1.1. Dla rzeczywistych sygnałów okresowych T 2 mt 2 x t cos dt ∫ T 0 T R[m] = T 2 mt 2 I [ m] = − ∫ x tsin dt T 0 T 2.1.2. Dla zespolonych sygnałów okresowych T −j 1 X [m]= ∫ x t e T 0 2 m t T dt 2.2. Równania syntezy sygnału na podstawie znanych współczynników szeregu Fouriera Aby na podstawie znanych współczynników szeregu Fouriera odtworzyć z powrotem okresowy sygnał w dziedzinie czasu należy posłużyć się odpowiednimi równaniami syntezy. Jeżeli współczynniki Fouriera opisują sygnał rzeczywisty, to można posłużyć się równaniami syntezy dla sygnałów rzeczywistych. Jeżeli natomiast syntezowany sygnał jest sygnałem zespolonym, to należy zastosować równania syntezy dla okresowych sygnałów zespolonych. 2.2.1. Równania dla ciągłych okresowych sygnałów rzeczywistych ∞ x t = ∑ R[m]cos m=0 2 mt 2 mt −I [m]sin T T Należy pamiętać, aby przed zastosowaniem tego równania współczynnik R[ 0] podzielić przez 2. 2.2.2. Równania dla ciągłych okresowych sygnałów zespolonych ∞ x t = ∑ X [m] e j 2 mt T m=0 3 Szeregi Fouriera służą do przekształcania sygnałów okresowych na zbiór dyskretnych współczynników. Do rozkładu na zbiór funkcji sinusoidalnych sygnałów nieokresowych służy tzw. ciągłe przekształcenie Fouriera (ang. continuous Fourier transform, CFT). Przekształcenie to jest przekształceniem bardziej ogólnym dlatego, że można z niego korzystać zarówno do sygnałów okresowych, jak i nieokresowych. Dla sygnałów okresowych daje ono jednak takie same wyniki jak rozkład na współczynniki szeregu Fouriera. Dla sygnałów nieokresowych w wyniku CFT otrzymuje się ciągłą funkcję rozkładu. Oznacza to, że sygnał nieokresowy rozkładany jest na nieskończony zbiór sinusoid i kosinusoid, których częstotliwość zmienia się w sposób ciągły. Dlatego w wyniku przekształcenia otrzymujemy ciągłą funkcję rozkładu, która pokazuje, jaka jest amplituda sinusoidy lub kosinusoidy o danej częstotliwości f lub pulsacji =2 f . Do wyznaczenia funkcji rozkładu wykorzystuje się równania analizy. 2.3. Równania analizy do obliczania widma ciągłego przekształcenia Fouriera 2.3.1. Równania analizy dla ciągłych nieokresowych sygnałów rzeczywistych 1 ∞ R = ∫ x t cos t d t −∞ 1 ∞ I = − ∫ x t sin t d t −∞ 2.3.2. Równania analizy dla ciągłych nieokresowych sygnałów zespolonych 1 ∞ X = x t e− j t d t ∫ 2 −∞ 2.4. Równania syntezy sygnału na podstawie znanego widma CFT Podobnie jak szeregi Fouriera CFT jest przekształceniem odwracalnym. Istnieją więc odpowiednie równania syntezy. 2.4.1. Równania syntezy dla ciągłych nieokresowych sygnałów rzeczywistych ∞ x t =∫ R cos t− I sint d 0 2.4.2. Równania syntezy dla ciągłych nieokresowych sygnałów zespolonych ∞ x t =∫ X e j t d −∞ 4 Wszystkie omawiane dotychczas przekształcenia Fouriera służyły do przekształcania w czasie sygnałów ciągłych. Szybki rozwój technologii układów cyfrowych sprawił, że popularne stało się przetwarzanie sygnałów dyskretnych. Sygnały takie można przetwarzać za pomocą wyspecjalizowanych układów cyfrowych, albo za pomocą komputera. Należy zdawać sobie sprawę z faktu, że omówione wcześniej transformaty mogą być wykorzystywane tylko do obliczeń i analiz symbolicznych. Za pomocą urządzeń cyfrowych można wykonać tylko jeden rodzaj przekształcenia Fouriera, dlatego najważniejszym przekształceniem jest dyskretne przekształcenie Fouriera (ang. discrete Fourier transform, DFT). Za pomocą tej techniki można rozkładać każdy dyskretny rzeczywisty i zespolony sygnał na zbiór dyskretnych w czasie i częstotliwości sinusoid i kosinusoid. 2.5. Równania analizy do obliczania współczynników dyskretnego przekształcenia Fouriera 2.5.1. Równania analizy dla dyskretnych okresowych sygnałów rzeczywistych N −1 2 mn N n=0 N −1 2 mn 2 I [ m] = − ∑ x [n]sin N n=0 N 2 N R[m] = ∑ x [n]cos 2.5.2. Równania analizy dla dyskretnych okresowych sygnałów zespolonych X [ m]= N −1 1 N ∑ x [ n] e − j 2 mn N n=0 2.6. Równania syntezy sygnału na podstawie współczynników DFT 2.6.1. Równanie syntezy sygnału rzeczywistego na podstawie współczynników DFT N −1 2 x [n ]= ∑ R [m] cos m=0 2 mn 2 mn − I [m]sin N N Należy pamiętać, aby podzielić X [ 0] przez 2 przed podstawieniem do równania syntezy. 2.6.2. Równanie syntezy sygnału zespolonego na podstawie współczynników DFT N −1 X [ n]= ∑ X [m] e j 2 mn N m=0 Istotne jest, aby po wykonaniu DFT wiedzieć, jakiej częstotliwości odpowiadają poszczególne składowe. Częstotliwość m-tej składowej możemy obliczyć według wzoru f m= jest częstotliwością próbkowania. 5 f s⋅m N , w którym f s W przypadku dyskretnych sygnałów nieokresowych jeżeli sygnał jest określony od −∞ do ∞ , to stosuje się dyskretne w czasie przekształcenie Fouriera (ang. discrete-time Fourier transform, DTFT). 2.7. Równania analizy przekształcenia DTFT 2.7.1. Równania analizy dla dyskretnych nieokresowych sygnałów rzeczywistych 1 ∞ R = ∑ x [ n]cos n n=−∞ 1 ∞ I = − ∑ x [n]sin n n=−∞ 2.7.2. Równanie analizy dla dyskretnych nieokresowych sygnałów zespolonych X = 1 ∞ x [ n] e− j n ∑ 2 n=−∞ 2.8. Równania syntezy przekształcenia DTFT 2.8.1. Równanie syntezy dyskretnego nieokresowego sygnału rzeczywistego na podstawie widma DTFT 2 x [n ]=∫ R cos n−I sin n d 0 2.8.2. Równanie syntezy dyskretnego nieokresowego sygnału zespolonego na podstawie widma DTFT 2 x [n ]=∫ X e j n d 0 Dyskretne w czasie przekształcenie Fouriera, mimo że transformuje sygnał dyskretny, nie może zostać obliczone numerycznie na komputerze. Przyczyną tego jest fakt, że nie sposób przechowywać w pamięci nieskończenie długich przebiegów; nie chodzi tylko o sygnał transformowany, ale również o zapisanie wyniku transformaty, który to wynik jest funkcją ciągłą na przedziale od 0 do 2 . 6 3. Zadania do realizacji Na zajęciach laboratoryjnych należy rozwiązać 5 podanych poniżej zadań. Każde z zadań polega na usunięciu błędów w podanych definicjach funkcji. Każda z definicji wykonuje operacje, które zostały teoretycznie omówione w poprzednich rozdziałach niniejszej instrukcji. Za każde zadanie można otrzymać jeden punkt pod warunkiem, że zostanie ono całkowicie poprawnie zrealizowane. Zadanie nr 1 W zadaniu pierwszym należy poprawić funkcje do obliczania modułu (gj_mag) i wartości kąta fazowego (gj_arg) dla tablicy liczb zespolonych zaimplementowanej w postaci dwóch tablic liczb rzeczywistych (re dla części rzeczywistej i im dla części urojonej). Wszystkie te funkcje zwracają tablicę liczb rzeczywistych. Ponadto należy usunąć błędy w funkcji do obliczania częstotliwości poszczególnych składowych widma Fouriera (gj_freq). Funkcje te przyjmują jako parametry liczbę punktów DFT N i częstotliwość próbkowania fs . Ostatnimi funkcjami do poprawienia w zadaniu pierwszym są funkcje dodawania (gj_cadd) i mnożenia (gj_cmul) dwóch liczb zespolonych. Parametrami tych funkcji są części rzeczywiste i urojone dwóch liczb zespolonych. Zwracane wartości to odpowiednio część rzeczywista i urojona wyniku operacji dodawania lub mnożenia. function fi=gj_arg(re,im) N=length(re); for i=1:N if (re(i)>0 && im(i)>0) fi(i)=atan(im(i)/re(i)); elseif (re(i)>0 && im(i)>=0) fi(i)=pi+atan(im(i)/re(i)); elseif (re(i)==0 && im(i)>0) fi(i)=-pi+atan(re(i)/im(i)); elseif (re(i)=<0 && im(i)<0) fi(i)=-pi; elseif (re(i)>0 && im(i)<=0) fi(i)=atan(im(i)/re(i)); else fi(i)=pi/2; endif endfor endfunction 7 function mag=gj_mag(re,im) N=length(re);mag=zeros(1,N); for i=1:N mag(i-1)=sqrt(re(i)*re(i)-im(i)*im(i)); endfor endfunction function [Cr,Ci]=gj_cmul(Ar,Ai,Br,Bi) Cr=Ar*Bi-Ai*Bi; Ci=Ar*Bi+Ai*Bi; endfunction function [Cr,Ci]=gj_cadd(Ar,Ai,Br,Bi) Cr=Ar+Br; Ci=Ai+Bi; endfunction function f=gj_freq(N,fs) f=zeros(1,N); for i=1:N f(i)=i*fs/N/2; endfor endfunction Zadanie nr 2 Zadanie drugie polega na usunięciu błędów z funkcji obliczającej DFT sygnału rzeczywistego. Funkcja jako parametr przyjmuje tablicę liczb rzeczywistych, a w wyniku zwraca dwie tablice, odpowiednio dla części rzeczywistej i urojonej wyniku. 8 function [Re,Im]=gj_rdft(x) N=length(x); Re=zeros(1,N/2+1); Im=zeros(1,N/2+1); for k=0:N/2 Tr=0; Ti=0; for n=0:N-1 Tr+=2*x(n)*cos(2*pi*k*n/N)/N; Ti+=-2*x(n)*sin(2*pi*k*n/N)/N; endfor Re(k)=Tr; Re(k)=Ti; endfor endfunction Zadanie nr 3 Zadanie trzecie polega na usunięciu błędów z funkcji obliczającej odwrotną DFT sygnału rzeczywistego. Funkcja jako parametr przyjmuje dwie tablice liczb rzeczywistych (jedna dla części rzeczywistej, a druga dla części urojonej widma DFT). W wyniku natomiast zwraca tablicę liczb rzeczywistych odpowiadających kolejnym próbkom sygnału. function x=gj_irdft(Re,Im) N=(length(Re)-1)*2; Re(1)/=2; Im(1)/=2; Re(N/2+1)/=2; Im(N/2+1)/=2; x=zeros(1,N); for n=0:N-1 T=0; for k=1:N/2 T+=Re(k)*cos(2*pi*n*k/N)-Im(k)*sin(2*pi*n*k/N); endfor x(n)=T; endfor endfunction 9 Zadanie nr 4 Zadanie czwarte polega na usunięciu błędów z funkcji obliczającej DFT sygnału zespolonego. Funkcja jako parametr przyjmuje dwie tablice liczb rzeczywistych (jedna dla części rzeczywistej sygnału, druga dla części urojonej sygnału), a w wyniku zwraca dwie tablice odpowiednio dla części rzeczywistej wyniku i urojonej widma DFT. function [Yr,Yi]=gj_cdft(Xr,Xi) N=length(Xr); for i=1:N Tr=0;Ti=0; for j=1:N Er=cos(2*pi*(i)*(j)/N); Ei=sin(2*pi*(i)*(j)/N); [Er,Ei]=gj_cmul(Xr(j),Xi(j),Er,Ei); [Tr,Ti]=gj_cadd(Tr,Ti,Er,Ei); endfor Yr(i)=Tr;Yi(i)=Ti; endfor endfunction Zadanie nr 5 Zadanie piąte polega na usunięciu błędów z funkcji obliczającej odwrotną DFT sygnału zespolonego. Funkcja jako parametr przyjmuje dwie tablice liczb rzeczywistych (jedna dla części rzeczywistej, a druga dla części urojonej widma DFT). W wyniku również zwraca dwie tablice liczb rzeczywistych (jedna dla części rzeczywistej, a druga dla części urojonej sygnału). function [Yr,Yi]=gj_icdft(Xr,Xi) N=length(Xr); for i=1:N Tr=0;Ti=0; for j=1:N Er=cos(2*pi*(i)*(j)/N); Ei=sin(2*pi*(i)*(j)/N); 10 [Er,Ei]=gj_cmul(Xr(j),Xi(j),Er,Ei); [Tr,Ti]=gj_cadd(Tr,Ti,Er,Ei); endfor Yr(i)=Tr;Yi(i)=Ti; endfor endfunction Pytania na kartkówkę 1. Napisać funkcję obliczającą moduł liczby zespolonej 2. Napisać funkcję obliczającą argument liczby zespolonej 3. Napisać funkcję obliczającą iloczyn dwóch liczb zespolonych 4. Napisać funkcję obliczającą wartość częstotliwości dla składowych N-punktowej DFT 5. Napisać funkcję do obliczania m-tej składowej rzeczywistej DFT 6. Napisać funkcję do obliczania m-tej składowej zespolonej DFT 7. Napisać funkcję do obliczania n-tej próbki sygnału zespolonego na podstawie widma DFT 8. Napisać funkcję do obliczania n-tej próbki sygnału rzeczywistego na podstawie widma DFT 11