Katedra Elektrotechniki Teoretycznej i Inormatyki Przedmiot: Zintegrowane Pakiety Obliczeniowe W Zastosowaniach InŜynierskich umer ćwiczenia: 7 Temat: Wprowadzenie do Signal Processing Toolbox 1. PRÓBKOWAIE I KWATYZACJA Sygnał analogowy o częstotliwości : x ( t ) = A sin( 2πt ) jest próbkowany z częstotliwością s (na rys. s = 16*; K = 16; = 1 khz; A = 1): x n) = A sin( 2πnt ). ( s Czas rzeczywisty (ciągły) został zamieniony na czas dyskretny, określany przez zmienną indeksową n: x( t) x( n) t nts n = 0,1,2, K 1 Sygnał y(n) przedstawiony jest za pomocą prąŝków. Aby inormacja mogła być poprawnie odtworzona, minimalna częstotliwość próbkowania sygnału musi być przynajmniej dwukrotnie większa od najwyŝszej częstotliwości składowej w sygnale: s 2 max max - maksymalna częstotliwość w sygnale. 1
Wizualizacja procesu próbkowania przedstawiona jest w skrypcie probkowanie.m: clear all s=16000; % częstotliwość próbkowania =1000; % częstotliwość sygnału ts=1/s; % odstęp próbkowania K=s/; % ilość próbek na okres K*ts = T lt=8; % liczba generowanych okresów pt=2; % liczba pokazywanych okresów pt <= lt n=1:k*lt; t=0:0.01/:(1/)*lt; % wygenerowanie lt okresów czasu (100 punktów/okres) x=sin(2*pi**t); % sygnał ciągły xs=sin(2*pi**n*ts); % sygnał próbkowany (K próbek/okres) igure plot(t,x,'k') % wykres sygnału ciągłego w dziedzinie czasu stem(n*ts,xs,'r') % wykres sygnału próbkowanego w dziedzinie czasu axis([0,(1/)*pt,-1.5,1.5]) xlabel('czas t [s]'); hold o Sinusoida =1kHz próbkowana jest częstotliwością s=16khz. a podstawie skryptu naleŝy: 1. sprawdzić jak częstotliwość próbkowania s wpływa na odwzorowanie sygnału podczas próbkowania (dla s=550, 1050, 2000, 2050, 8000, 16000 Hz). 2. określić, dlaczego dla s=2000 (s równe dokładnie dwukrotnej częstotliwości sygnału) sygnał próbkowany nie występuje, co naleŝy zrobić aby to zmienić? Aby sygnał mógł być przetwarzany przez układy cyrowe, oprócz dyskretyzacji w dziedzinie czasu, musi być dokonana dyskretyzacja wartości sygnału (sprowadzenie wartości sygnału do zbioru skończonego). W wyniku tego działania powstają błędy kwantyzacji, których wielkość zaleŝna jest od ilości przedziałów, na które podzielony został zakres sygnału. Przykładem procesu kwantyzacji jest unkcja kwantyzuj. Dzieli ona zakres wartości danego sygnału na 2^bit przedziały (bit ilość bitów przetwornika AC). Wartości kaŝdej z próbek przyporządkowuje wartość środkową z przedziału, w którym się zawiera. Wywołanie tej unkcji wygląda następująco: sygnal_wyjsciowy = kwantyzuj (ilosc_bitów_przetwornika_ac, sygnal_wejsciowy). 2. DYSKRETA TRASFORMATA FOURIERA Analiza i przetwarzanie sygnałów wymaga znajomości reprezentacji sygnału nie tylko w dziedzinie czasu, ale i w dziedzinie częstotliwości. Przejście pomiędzy tymi dziedzinami moŝliwe jest dzięki transormacie Fouriera (t->) i odwrotnej transormacie Fouriera (->t). Transormata Fouriera dla unkcji ciągłych wyraŝa się następującą zaleŝnością: X ( ) = x ( t ) e j ϖ t dt Dla sygnałów dyskretnych w dziedzinie czasu stosowana jest dyskretna transormata Fouriera, wyraŝająca się następującym wzorem: X ( m ) = 1 n = 0 x( n) e j 2πnm 2
W wyniku powstaje dyskretny ciąg X(m) w dziedzinie częstotliwości, przy czym m jest indeksem próbek wyjściowych DFT w dziedzinie częstotliwości (m=0,1,2, -1). to liczba próbek ciągu wejściowego oraz liczba punktów częstotliwości w ciągu wyjściowym DFT. Analiza częstotliwościowa sygnału x(n), wyznaczająca wartości X(m) DFT, zwane prąŝkami, jest dokonywana w punktach osi częstotliwości będących całkowitymi wielokrotnościami częstotliwości zdeiniowanej jako s/. a podstawie tego moŝliwe jest wyliczenie podziałki częstotliwości: m s an ( m) =. Ogół zagadnień związanych z próbkowaniem, kwantyzacją i DFT przedstawiony jest w skrypcie prob_dt. a początku uŝytkownik wprowadza podstawowe parametry sygnału (amplitudy i częstotliwość; sygnał x1 to suma dwóch sinusoid), częstotliwość próbkowania oraz ilość bitów przetwornika. astępnie przedstawiona jest róŝnica pomiędzy sygnałem kwantowanym, a nie kwantowanym. Po tym pokazane są błędy wynikające z procesu kwantyzacji. a końcu wyliczona jest DFT. W skrypcie posłuŝono się zaleŝnością na DFT, po przekształceniu Eulera, tj: X ( m ) = 1 n = 0 x ( n )[cos( 2π nm ) j sin( 2π nm )] Wyświetlana jest tylko pierwsza połowa próbek, poniewaŝ przy wyliczaniu punktowej transormaty DFT, jedynie pierwsze /2 próbek jest niezaleŝnych. Druga połowa jest odbiciem symetrycznym pierwszej. Wykonana została równieŝ korekta wartości widma amplitudowego. clear all = 32; % ilosc punktów DFT n = 1:; m = 1:; % deinicja opisów wejściowych: opis = {'Czestotliwosc pierwszej skladowej 1 [Hz]:','Czestotliwosc drugiej skladowej 2 [Hz]:',... 'Amplituda pierwszej skladowej A1 [V]:','Amplituda drugiej skladowej A2 [V]:',... 'Czestotliwosc probkowania s Hz]:','Liczba bitow przetwornika (1-12):'}; % deinicja wartosci domyslnych: de = {'1000','2000','1','0','32000','3'}; % wygenerowanie okna dialogowego: odp = inputdlg(opis,'parametry sygnalu',1,de); % przyporzadkowanie wartosci: temp = str2num(char(odp)); 1 = temp(1) 2 = temp(2) A1 = temp(3) A2 = temp(4) s = temp(5) % czestotliwosc próbkowania = (ilosc próbek)/sek; najlepiej *1000 ts = 1/s; % odstep próbkowania bit = temp(6) % zdeiniowanie sygnalu wejsciowego x1(n) x1 = A1*sin(2*pi*1*(n-1)*ts)+A2*sin(2*pi*2*(n-1)*ts); % x1(n) % porównanie sygnalu przed i po kwantyzacji subplot(2,1,1) plot(0:-1,x1,'r') % wykres w dziedzinie czasu stem(0:-1,x1,'g'); % sygnal spróbkowany title('probkowanie sygnalu'); legend('x1-sygnal ciagly','probki bez kwantyzacji'); ylabel('[v]'); hold o 3
subplot(2,1,2) plot(0:-1,x1,'r') x=kwantyzuj(bit,x1); stem(0:-1,x,'k'); title('probkowanie z kwantyzacja sygnalu'); legend('x1-sygnal ciagly','probki po kwantyzacji'); ylabel('[v]'); hold o % wykres w dziedzinie czasu % wywolanie unkcji kwantyzujacej % próbki po kwantyzacji % przedstawienie bledów kwantyzacji igure stem(0:-1,x1-x,'b'); title('bledy spowodowane kwantyzacja sygnalu (zalezne od ilosci bitow przetwarzania)'); legend('(x1 - x)') % wyliczenie DFT an = (m-1)*s/ % wyliczenie podzialki czestotliwosci or m = 1: X(m)=0; or n = 1: X(m) = X(m) + x(n)*(cos(2*pi*(n-1)*(m-1)/)-j*sin(2*pi*(n-1)*(m-1)/)); end end X = X/(/2); % korekta amplitudy X(1) = X(1)/2; % korekta poziomu skladowej stalej % przedstawienie wyników dzialania DFT igure stem(an,sqrt(real(x).^2+imag(x).^2)) % wykres modulu w dziedzinie czestotliwosci axis([0,((/2)+1)*s/,0,1.1*max(sqrt(real(x).^2+imag(x).^2))]); title('dyskretna transormata Fouriera'); legend('prazki reprezentuja skladowe czestotliwosci sygnalu'); xlabel('czestotliwosc [Hz]'); ylabel('modul [V]'); W programie MATLAB transormata Fouriera realizowana jest przez polecenie t: X = t(x,n); x sygnał cyrowy w dziedzinie czasu n liczba punktów transormaty X- widmo sygnału (sygnał w dziedzinie częstotliwości). Odwrotna transormata Fouriera realizowana jest przez polecenie it: x = it(x,n); X- widmo sygnału (sygnał w dziedzinie częstotliwości) n liczba punktów transormaty x sygnał cyrowy w dziedzinie czasu. 4
3. ĆWICZEIA Ćwiczenie 1 Zmieniając liczbę bitów przetwornika AC (np. bit = 1, 3, 4, 8, 10), zbadać: a) jak zmienia się obraz próbkowanego sygnału, b) poziom (rząd wielkości) błędów kwantyzacji, porównać maksymalny błąd kwantyzacji z połową przedziału kwantowania, c) jakie zniekształcenia się pojawiają (wyŝsze harmoniczne sygnału), dla bit=1, 2, 4, 8 wyznacz współczynnik zawartości harmonicznych, zdeiniowany następująco: Ćwiczenie 2 k h 2 2 2 H 2 + H 3 + H 4 + K =, gdzie H n - n-ta harmoniczna H 1 Zaobserwować, Ŝe dla sygnału prostokątnego (bit=1), występują jedynie nieparzyste harmoniczne sygnału. Ćwiczenie 3 Porównać wyniki (szczególnie w dziedzinie częstotliwości) dla dwóch przypadków: - s= 8000 Hz, bit=8, pozostałe parametry domyślne - s= 8600 Hz, bit=8, pozostałe parametry domyślne. - W ostatnim przypadku s nie jest całkowitą wielokrotnością częstotliwości składowej sygnału, a więc występuje zjawisko przecieku widma DFT. Energia składowej nie spełniającej tego warunku ujawnia się w pewnym stopniu we wszystkich prąŝkach: bez przecieku z przeciekiem Ćwiczenie 4 1. Wygenerować sygnał y składający się z 4 harmonicznych 2. Wyznaczyć jego postać częstotliwościową Y 3. a podstawie Y stosując odwrotną transormatę Fouriera wyznacz ponownie sygnał w dziedzinie czasu. Zapisz go w zmiennej y1 4. Porównaj sygnały y i y1, wykreśl (y1 - y)/max(y) 5