Informatica industriala Transformata fourier discreta (DFT) si Transformata Fourier rapida (FFT)
Transformate Fourier Obiectiv: descompunerea unui semnal complex intr-o suma de semnale simple semnale simple: set de semnale sinusoidale pentru ca sunt ortogonale nu isi schimba forma la trecerea printr-un sistem liniar (se schimba amplitudinea si faza, dar semnalul ramane sinusoidal si de aceeasi frecventa) Mai multe tipuri de transformate Fourier pentru diferite tipuri de semnale:
Transformate Fourier Mai multe tipuri de transformate Fourier pentru diferite tipuri de semnale Tip semnal Forma senalului Tip de transformata Fourier Semnal aperiodic continuu Transformata Fourier Semnal periodic continuu Serii Fourier Semnal aperiodic discret Transformata Fourier de timp discreta Semnal periodic discret Transformata Fourier discreta (DFT)
Transformata Fourier Discreta se aplica numai semnalelor discrete periodice pentru ca are un numar finit de termeni se poate calcula printr-un numar finit de pasi semnalele digitale aperiodice pot fi “transformate” artificial in semnale periodice transformata Fourier discreta (DFT) transforma un set de N esantioane de intrare (din domeniul timp) in 2 seturi de N/2+1 esantioane de iesire din domeniul frecventa un set de amplitudini pentru functii cosinus – partea reala ReX[k], pentru functii ck[i] = cos (2πki/N) – cos() esantionat un set de amplitudin pentru functii sinus – partea imaginara ImX[k], pentru functii Sk[i] = sin (2πki/N) – sin() esantionat unde k=0 - N/2, iar i=0 – (N-1)
Sinteza unui semnal pe baza coeficientilor transformatei Fourier discrete: unde sunt valorile normalizate ale coeficientilor din transformata Fourier discreta
Calcularea DFT trei metode: didactica, dar foarte lenta prin convolutie (clasica) transformata Fourier rapida FFT Didactica: folosind formula anterioara de sinteza, scriem N ecuatii cu N necunoscute pentru cele N valori discrete ale lui x[i] teoretic ar fi (N/2+1) + (N/2+1) = N+2 coeficienti de determinat, dar se poate arata ca ImX[0]=0 si ImX[N/2]=0, asa ca raman N necunoscute ReX[k] si ImX[k] se rezolva setul de N ecuatii cu N necunoscute (ex. cu metoda eliminarii a lui Gauss) metoda prea lenta, nu se foloseste practic, dar arata teoretic de ce se pot determina coeficientii Fourier din N esantioane ale intrarii
Calcularea DFT prin convolutie se bazeaza pe ortogonalitatea functiilor elementare sinusoidale daca un semnal de intrare x[i] contine o sinusoida de o anumita frecventa atunci corelatia lui x[i] cu acea functie este diferita de zero (este amplitudinea acelei componente in x); daca semnalul nu contine acea componenta convolutia lui x[i] cu acea sinusoida este 0 formula de calcul a coeficientilor:
Reprezentarea polara a transformatei Fourier discrete reprezentarea grafica a ReX[k] si ImX[k] nu este relevanta pentru ochiul uman perechile sin si cos de aceeasi frecventa se transforma intr-o functie cos dupa formula: A cos(x+θ)= C cos(x) + S sin (x) pentru fiecare frecventa rezulta o magnitudine A (amplitudine) si o faza θ, care se calculeaza cu: A[k] = ReX[k]2 + ImX[k]2 θ[k] = arctan(ImX[k]/ReX[k])) ImX[k] ReX[k] θ[k] A[k]
Reprezentarea polara a transformatei Fourier discrete
Reprezentarea frecventei in diagramele DFT (reprezentarea axei x) patru posibilitati de reprezentare a frecventei: ca esantioane ale transformatei, de la 0 la N/2 N este numarul de esantioane ale intrarii de exemplu pentru N=128, se obtin 64 de esantioane ale transformatei programatorii prefera aceasta metoda, desi nu este prea sugestiva privind frecventele reale prezente in semnal ca o fractie din frecventa de esantionare, cu interval de variatie (0-0,5) teorema lui Shannon limiteaza frecventa semnalului de intrare la jumatate din frecventa de esantionare trecerea din prima reprezentare in a doua se face prin divizare cu N similar cu cazul 2 dar multiplicat cu 2π se obtine o variatie in radiani, intre 0 si π ca o secventa de frecvente reale valorile din cazul 2 de reprezentare se inmultesc cu frecventa de esantionare de exemplu daca frecventa de esantionare este 1000Hz atunci axa Ox variaza intre 0 si 500 Hz
Reprezentarea unui semnal in Domeniul timp si in Domeniul frecventa Reprezentare prin N/2 esantionane semnalul esantionat in timp b. partea reala a transformatei (functii cos()) c. partea imaginara a transformatei (functii sin()) Reprezentare prin fractii ale frecventei de esantionare
Transformata Fourier Rapida (FFT) observatii preliminarii: o metoda de a calcula mult mai eficient DFT timpul de calcul scade cu 2, 3 ordine de marime; permite utilizarea transformatei Fourier ca metoda de analiza in aplicatii de procesare a semnalelor on-line (in timp real) complexitatea algoritmului de calcul al DFT prin convolutie este n2 ;complexitatea FFT este n*lg n explicarea bazelor matematice ale metodei FFT este mult mai complexa decat forma algoritmului care rezulta “FFT este pentru Procesarea digitala a semnalelor ca si un tranzistor pentru circuitele electronice: o componenta de baza; dar nu trebuie sa intelegi structura complexa a tranzistorului ca sa-l folosesti cu succes; doar un mic numar de specialisti inteleg cu adevarat cum functioneaza tranzistorul (ca si FFT-ul) dar foarte multi il folosesc”
Metoda de calcul a FFT Secventa de calcul: pasul 1: un semnal de N puncte din domeniul timp se descompune in N semnale de cate un singur punct pasul 2: se calculeaza distributiile spectrale pentru cele N semnale de un punct pasul 3: cele N spectre obtinute se sintetizeaza intr-un singur spectru
Detalii privind calculul FFT Pasul 1: Decompozitia semnalului avand N puncte in domeniul timp exemplu de descompunere pentru un semnal avand 16 puncte Semnalul initial cu 16 puncte 2 semnale a cate 8 puncte log2n pasi 16 semnale a cate 1 punct
Detalii privind calculul FFT Pasul 2: descompunerea spectrala a semnalului de un punct banal: spectrul este egal cu valoarea punctului (demonstrat in teoria semnalelor) deci nu se calculeaza nimic, valorile spectrale sunt valorile punctelor din domeniul timp Pasul 3: sinteza spectrelor fiecarui punct pentru a obtine spectrul semnalului initial sinteza se face in ordine inversa celei de descompunere: se combina cate 2 spectre de punct pentru a obtine spectrul pentru 2 puncte, apoi spectrele de 2 puncte cate 2 pentru a obtine spectre de cate 4 puncte s.a.m.d. pana la obtinerea spectrului pentru semnalul initial cu N puncte
Detalii privind calculul FFT Pasul 3(continuare): exemplu de combinare a 2 spectre de 4 puncte pentru a obtine un spectru pentru 8 puncte operatia de baza: compozitia a 2 puncte in alte 2 puncte Spectrul pentru 4 puncte impare Spectrul pentru 4 puncte pare 2 puncte de intrare Spectrul de frecventa pentru 8 puncte Unitate elementara de calcul de tip fluture (butterfly) xS – reprezinta multiplicarea cu o sinusoida 2 puncte de iesire
Detalii privind calculul FFT Diagrama de executie a programului Semnal in domeniul timp Decompozitia semnalului de intrare log2n ori Antet pentru fiecare sub-DFT Antet Calculul unei unitati butterfly pentru fiecare butterfly Distributia spectrala (semnal in domeniul frecventa)
Programul FFT scris in Fortran