pobierz instrukcję - Politechnika Wrocławska
Transkrypt
pobierz instrukcję - Politechnika Wrocławska
Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów – laboratorium ETD5067L Ćwiczenie 3. Właściwości przekształcenia Fouriera 1. Podstawowe właściwości przekształcenia Fouriera Omówione w ramach niniejszego ćwiczenia właściwości dotyczą m.in. DFT, DTFT. Niech w dalszej części instrukcji zapis X=FT{x } oznacza przekształcenie Fouriera, natomiast zapis x=FT−1{X} odwrotne przekształcenie Fouriera. Zbiór funkcji bazowych DFT jest zbiorem skończonym (k=0,.., N −1), jak również same funkcje bazowe są funkcjami zdefiniowanymi dla skończonej liczby próbek (n=0, ..., N–1). Te dwie właściwości sprawiają, że zarówno ilość operacji niezbędnych do wykonania obliczeń DFT, jak i ilość potrzebnej pamięci są liczbą skończoną. Dyskretne przekształcenie Fouriera DFT jest zatem jedynym przekształceniem, które można obliczyć za pomocą układów cyfrowych. W niniejszym ćwiczeniu badane będą właściwości wszystkich przekształceń Fouriera, jak również unikalne właściwości DFT. W niniejszym ćwiczeniu transformowane będą sygnały rzeczywiste. Oznacza to, że obserwowana będzie symetria amplitudy i antysymetria fazy względem składowej o częstotliwości 0 Hz (składowej stałej) przekształceń Fouriera dla częstotliwości ujemnych. W przypadku transformat sygnałów dyskretnych (DFT i DTFT) występuje dodatkowo okresowość widm (X[k+pN]=X[k] dla DFT i X(+p2)=X() dla DTFT, gdzie p jest liczbą całkowitą). Konsekwencją okresowości i symetrii względem 0 jest symetria i antysymetria względem częstotliwości równej połowie częstotliwości próbkowania( k=N/2 dla DFT i dla DTFT). Rys. 1. Widmo amplitudowe sygnału dyskretnego (widmo DFT jest dyskretne, widmo DTFT jest ciągłe) 1.1. Homogeniczność Wszystkie przekształcenia Fouriera są homogeniczne, tzn. k-krotna zmiana amplitudy sygnału spowoduje k-krotną zmianę amplitudy transformaty: a X=FT {a x} . Podobną zależnością charakteryzuje się przekształcenie odwrotne: a x=FT−1 {a X } . 1.2. Addytywność Każde przekształcenie Fouriera jest addytywne, tzn. transformata sumy sygnałów jest równa sumie transformat tych sygnałów: FT{x1+x2}=FT {x1}+FT {x2} . Addytywne jest również odwrotne przekształcenie Fouriera: FT−1 {X1+X2}=FT−1{X1}+FT−1{X2} . Homogeniczność i addytywność świadczą o liniowości przekształceń Fouriera, a można je udowodnić, korzystając bezpośrednio z definicji transformacji Fouriera . 1.3. Kompresja i ekspansja sygnału Kompresja sygnału w jednej dziedzinie powoduje jego ekspansję w drugiej dziedzinie, np. zwężenie sygnału w dziedzinie czasu („przyspieszenie”) spowoduje poszerzenie widma częstotliwościowego (wystąpienie większych częstotliwości). Dla a=const możemy zapisać: 1 k FT xan X a a Właściwość ta jest prawdziwa dla wszystkich przekształceń Fouriera. 1.4. Właściwości fazowe przekształcenia Fouriera 1.4.1. Wpływ przesunięcia sygnału w dziedzinie czasu na fazę transformaty Przesunięcie sygnału w czasie nie zmienia amplitudy jego transformaty. Ma natomiast wpływ na jej fazę – jeśli sygnał zostanie w dziedzinie czasu przesunięty o s próbek, faza transformaty zmieni się o 2ks/N : 2ks x2 n x1 n s X 2 k X1 k N gdzie k=0..N-1 jest indeksem składowej DFT. X1 i X2 są widmami fazowymi sygnałów x1 i x2. 1.4.2. Rozwinięcie fazy Kąt fazowy liczby zespolonej jest liczbą z przedziału ; (albo 0; 2 ). Niemniej przy analizie fazy (widma fazowego) transformaty Fouriera przydatne jest często, aby – ze względu na zachowanie ciągłości widma fazowego – przeciwdziedzina była zbiorem większym. W tym celu stosuje się rozwijanie fazy (ang. phase unwrapping), polegające na dodawaniu całkowitych wielokrotności 2 do obliczonych kątów. Dąży się przy tym do tego, żeby różnica fazy między kolejnymi punktami transformaty była jak najmniejsza (patrz rys. 2). Rys. 2. Widmo fazowe transformaty Fouriera sygnału przesuniętej w czasie delty Kroneckera (dyskretne dla DFT, ciągłe dla DTFT). Technika ta jest np. wykorzystywana przy pomiarach interferometrycznych (do pomiarów odległości większych niż połowa długości fali). 1.5. Przeciek widma To właściwość dotycząca tylko DFT. Jest związana z faktem, że zbiór funkcji bazowych DFT jest zbiorem skończonym. W jego skład wchodzą funkcje sinusoidalne i kosinusoidalne o całkowitej liczbie okresów. Przeciek widma DFT obserwujemy w przypadku, gdy transformujemy dyskretne funkcje. Problem wynika z faktu, że DFT traktuje transformowany sygnał jak sygnał okresowy. Jeżeli chcemy transformować sygnały nieokresowe musimy odpowiednio dobrać długość okresu, czyli liczbę punktów DFT. Można łatwo zauważyć, że gdy liczba punktów DFT dąży do nieskończoności to DFT przekształca się w transformację DTFT. Zwiększenie liczby punktów DFT może odbywać się na dwa sposoby. Można zwiększyć długość analizowanego sygnału. Jeżeli jest to sygnał o nieskończonym czasie trwania ale asymptotycznie zmierzający do zera, to wyniki DFT będą coraz bardziej zbieżne z wynikami DTFT. Długość wtedy uzależnia się od założonej dokładności aproksymacji. Drugim rozwiązaniem jest dopisanie na końcu sygnału odpowiedniej liczby zer. Jeżeli sygnał jest sygnałem o ograniczonym czasie trwania, to taki zabieg nie zmienia w sposób istotny jego właściwości (bo jego wartości w tym czasie są i tak równe zero), a zwiększa rozdzielczość DFT. Tak zmiana ilości punktów DFT sprawia, że wynik DFT aproksymuje wynik DTFT. Ostatnią klasą sygnałów, w przypadku których ujawnia się przeciek DFT, są sygnały harmoniczne (sygnały sinusoidalne), których częstotliwości nie pokrywają się z częstotliwościami funkcji bazowych DFT. W DFT częstotliwości f funkcji bazowych określane są przez numer składowej k i liczbę punktów DFT N za pomocą równania f=k/N. Jeżeli k=0..N-1, to widać wyraźnie, że nie wyczerpuje to wszystkich możliwych częstotliwości sygnałów harmonicznych. Jeżeli używamy DFT do analizy jednego sygnału harmonicznego, to można tak dobrać liczbę próbek DFT, aby częstotliwość tego sygnału była jedną z tych ściśle zdefiniowanych częstotliwości (np. f=0.3 to można użyć 1000 punktowej DFT, wtedy dla k=300 będziemy mieli częstotliwość f=k/N=0.3). Większy problem pojawia się kiedy analizujemy sygnał składający się z kilku sygnałów harmonicznych. Wtedy dużo trudniej dobrać liczbę próbek DFT tak, aby w pełni uniknąć zjawiska przecieku (zobacz rys. 3). Maksymalny przeciek w przypadku sygnałów harmonicznych występuje wtedy, gdy częstotliwość sygnału znajduje się dokładnie pośrodku między sąsiednimi częstotliwościami składowych DFT. Rys. 3. Ilustracja zjawiska przecieku widma DFT. Sygnał x(t) składa się z dwóch sygnałów harmonicznych. Częstotliwość pierwszego wynosi częstotliwości f1=3/128 Hz, a częstotliwość drugiego f2=65/256 Hz. Ponieważ użyto 128 punktowej DFT, a częstotliwość próbkowania fs wynosi 1 Hz, to zjawisko przecieku obserwujemy tylko dla drugiego sygnału harmonicznego. W takim przypadku stosuje się tzw. okienkowanie, które jest operacją mnożenia sygnału przez specjalnie zdefiniowaną funkcję okna. Okno ma za zadanie zmienić charakter (nie da się go wyeliminować) przecieku widma w taki sposób, aby pomiar amplitudy sygnałów harmonicznych był pomiarem bardziej dokładnym. Dokładność pomiaru amplitudy odbywa się kosztem rozdzielczości częstotliwościowej widma. Zastosowanie funkcji okna zostanie omówione dokładniej przy zagadnieniu filtracji SOI w ćwiczeniu 4. 1.6. Modulacja amplitudowa – mnożenie sygnałów 1.6.1. Splot Splotem sygnałów nazywamy działanie, którego argumentami są dwa sygnały i które zdefiniowane jest dla sygnałów ciągłych następującym wzorem: st x1 t * x2 t x1 u x2 t u du Dla sygnałów dyskretnych x i y operację wyznaczania n-tej próbki splotu zapisać można następująco: zn xn* yn N X 1 yk xn k k 0 Długość splotu dwóch sygnałów x, y wynosi Nx+Ny-1, gdzie Nx jest długością sygnału x a Ny długością sygnału y. Przy obliczaniu splotu należy zwrócić uwagę na to, że kiedy indeksy sygnałów x i y wychodzą poza dozwolony zakres, to wartości sygnału zastępuje się zerami (patrz rys. 4). Rys. 4. Ilustracja działania operacji splotu z=x*y. Trójkąt oznacza operację mnożenia, a koło dodawania. Można zauważyć, że brakujące próbki sygnału x uzupełniane są zerami (sytuacja gdy wychodzi się poza dozwolony zakres indeksów tablicy x). 1.6.2. Mnożenie sygnałów a przekształcenie Fouriera Transformata splotu sygnałów jest iloczynem transformat tych sygnałów: FT{x1*x2}=FT{x1}FT{x2}, natomiast transformata iloczynu sygnałów jest splotem ich transformat: FT{x1x2}=FT {x1}*FT{x2}. Mnożenie dwóch sygnałów jest wykorzystywane m.in. przy modulacji amplitudowej, a mnożenie transformat przy filtracji sygnałów. Wykorzystuje się tu fakt, że sygnały harmoniczne moją widma Fouriera w postacie impulsu Diraca (dla Przekształcenie Fouriera i DTFT) lub impulsu Kroneckera (dla Szeregów Fouriera i DFT). Operacja splotu z impulsem powoduje przesunięcie sygnału do pozycji impulsu. Dlatego mnożąc dowolny sygnał przez sygnał harmoniczny o wybranej częstotliwości, przesuwamy widmo sygnału do częstotliwości położenia impulsów). Należy pamiętać, że dla sygnałów rzeczywistych widmo jest symetryczne. Sprawia to, że modulacji ulega zarówno część dla częstotliwości dodatnich jak i dla częstotliwości ujemnych. Jest to szczególnie ważne, jeżeli modulowane sygnały mają charakter sygnałów pasmowych (patrz rys. 5). Rys. 5. Ilustracja właściwości modulacji sygnałem harmonicznym. Sygnał modulowany jest sygnałem pasmowym i posiada dwie wstęgi odpowiadające fragmentom widma dla częstotliwości dodatnich i dla częstotliwości ujemnych (kolor niebieski). W trakcie modulacji obie wstęgi są przesuwane do położenia impulsów sygnału modulującego. 2. Zadania do realizacji Na zajęciach laboratoryjnych należy rozwiązać 5 podanych poniżej zadań. Za każde zadanie można otrzymać jeden punkt pod warunkiem, że zostanie ono całkowicie poprawnie zrealizowane. Warto przypomnieć, że w zadaniach wskazane jest wykorzystywanie funkcji napisanych podczas wcześniejszych ćwiczeń. Zadanie nr 1 W zadaniu pierwszym należy napisać dwie funkcje. Pierwszą w postaci: function [t, x]=sin_t(tN, c, N) #definicja ciała funkcji endfunction generującą sinusoidę. x to tablica z kolejnymi wartościami sinusoidy. t to tablica z kolejnymi wartościami czasu, dla których obliczono wartości sinusoidy. c to częstotliwość sinusoidy w hercach. Wartości sinusoidy mają być obliczone dla N próbek w równych odstępach czasu, zaczynając od chwili t=0, a kończąc na chwili t=tN. Druga funkcja powinna mieć postać: function [fx]=freq_d(tN, N) #definicja ciała funkcji endfunction i zwracać wektor fx częstotliwości składowych DFT, jeśli czas trwania sygnału wynosi tN sekund, a sygnał po równomiernym próbkowaniu ma N próbek. Wykorzystując funkcję sin_t i freq_d or fft, zaprezentuj zjawisko okresowości widma DFT i przecieku DFT. Funkcja fft jest wbudowaną funkcją Octave’a do obliczania DFT zespolonego sygnału dyskretnego. Przykład użycia: y=fft(x); żeby uzyskać moduł i fazę transformaty Fouriera, można posłużyć się funkcjami abs i arg. Są to wbudowane funkcje Octave’a. Przykład użycia modY=abs(y); fazaY=arg(y); Zadanie nr 2 W zadaniu drugim należy napisać funkcję następującej postaci: function z=sig_mul(x, y) #definicja ciała funkcji endfunction wykonującą mnożenie dwóch sygnałów x[n] i y[n] ( n 0.. N 1, zn xnyn). Wykorzystując funkcję sig_mul należy wykonać mnożenie sygnału Gaussa (n u ) 2 i sygnału sinusoidalnego ( y[n] sin n ). Sygnał Gaussa można x[n] exp 2 2 2 s otrzymać za pomocą wyrażenia: x=exp( - ( [1:N] – u ).^2/2/s^2 ). W tym wyrażeniu N definiuje ilość próbek sygnału Gaussowskiego, u jest przesunięciem krzywej, a s jest stopniem rozmycia. Sygnał sinusoidalny należy wygenerować za pomocą funkcji sin_t. Po obliczeniu sygnału iloczynu, należy zaprezentować wpływ mnożenia na moduł DFT sygnału Gaussa. Zadanie nr 3 Zadanie trzecie polega na napisaniu funkcji następującej: function [uw_fi]=unwrap_phase(fi) #definicja ciała funkcji endfunction która będzie realizować rozwinięcie fazy. Funkcję należy wykorzystać do obserwacji wpływu przesunięcia sygnału na fazę jego DFT. Przesuwanym sygnałem powinien być impuls 1 dla n 0 Kroneckera n . Sygnał ten można uzyskać za pomocą wyrażenia: 0 dla n 0 delta=[1,zeros(1,N-1). N jest długością sygnału. Jeżeli chcemy przesunąć sygnał o 1 próbkę, to można użyć funkcji shift. Przykład użycia: shift(delta,1) przesuwa jedynkę o 1 pozycję w prawo. Zadanie nr 4 W zadaniu czwartym należy napisać funkcję następującej postaci: function z=sig_conv(x, y) #definicja ciała funkcji endfunction która będzie realizować splot sygnałów x[n] i y[n]. Zaprezentuj wykres splotu impulsów prostokątnego z Gaussowskim oraz wykresy modułów DFT sygnałów x i y oraz DFT sygnału splotu z. Przed obliczeniem transformat sygnałów (z, x, y), należy zwrócić uwagę na to, żeby wszystkie sygnały miały taką samą ilość próbek i żeby wykresy modułów transformat miały prawidłowo wyskalowaną oś częstotliwości. Zadanie nr 5 Do dyspozycji jest sygnał dźwiękowy Wroclaw.wav, który można wczytać do Octave’a za pomocą wbudowanej funkcji wavread(). Przykład użycia: y=wavread(”D:\\PS\\Wroclaw.wav”). Częstotliwość próbkowania tego sygnału wynosi 16 kHz. W ramach zadania 5. należy wykonać prawidłową modulację amplitudową z sygnałem Wroclaw.wav jako sygnałem modulowanym. Do zaliczenia zadania potrzebne jest wyświetlenie na wspólnym wykresie modułu transformaty Fouriera sygnału przed i po modulacji z prawidłowo wyskalowaną osią częstotliwości. Pytania na kartkówkę 1. Oblicz częstotliwość próbkowania sygnału, który trwa 8 sekund i składa się z 9 2. 3. 4. 5. równomiernie rozłożonych próbek. Dobierz częstotliwość sinusoidy spróbkowanej z częstotliwością fs=10kHz tak, aby dla 100 punktowej DFT uniknąć zjawiska przecieku. Dobierz częstotliwość sinusoidy spróbkowanej z częstotliwością fs=10kHz tak, aby dla 100 punktowej DFT zaobserwować maksymalny przeciek. Jak zmieni się faza 30 punktowej DFT sygnału x[n], jeżeli przesuniemy ten sygnał o 3 próbki w prawo? Jaką długość będzie miał splot sygnałów o długości 10 i 30 próbek? 6. Szerokość widma 100 punktowej DFT sygnału spróbkowanego z częstotliwością 10 kHz wynosi 1 kHz. Jaka jest maksymalna częstotliwość, z jaką można cyfrowo modulować ten sygnał?