lab1 - Politechnika Warszawska
Transkrypt
lab1 - Politechnika Warszawska
Laboratorium Cyfrowego Przetwarzania Sygnałów Preskrypt do v.2016L Ćwiczenie nr 1 (Próbkowanie, odtwarzanie, decymacja, interpolacja) na prawach rękopisu Jacek Misiurewicz Krzysztof Kulpa Mateusz Malanowski Piotr Krysik Damian Gromek Piotr Samczyński Łukasz Maślikowski Artur Gromek Marcin K. Bączyk Zakład Teorii Obwodów i Sygnałów Instytut Systemów Elektronicznych Wydział Elektroniki i Technik Informacyjnych Politechnika Warszawska Uwagi redakcyjne prosimy zgłaszać do: [email protected] tel. 5441 Warszawa, 16 marca 2016, 20:55 Spis treści 1 Próbkowanie, odtwarzanie, decymacja, interpolacja 1.1 Podstawy teoretyczne . . . . . . . . . . . . . . . 1.1.1 Sygnał dyskretny . . . . . . . . . . . . . 1.1.2 Redukcja i ekspansja próbek . . . . . . . 1.1.3 Zadania do pracy własnej studenta . . . . 1.2 Dostępny sprzęt i oprogramowanie . . . . . . . . R . . . . . . . . . . 1.2.1 Skrypty MATLABa⃝ 1.2.2 Aparatura . . . . . . . . . . . . . . . . . 1.3 Eksperymenty do wykonania w laboratorium . . 1.3.1 Sygnał dyskretny i jego widmo . . . . . . 1.3.2 Efekty kwantowania . . . . . . . . . . . 1.3.3 Redukcja i ekspansja próbek . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 11 14 15 15 16 18 19 22 23 Ćwiczenie 1 Próbkowanie, odtwarzanie, decymacja, interpolacja Opiekun ćwiczenia: JM 1.1. Podstawy teoretyczne Celem ćwiczenia jest opanowanie nastepujących zagadnień: – okresowy sygnał dyskretny: pojecie okresu, częstotliwości (unormowanej), ich związku z częstotliwością i okresem “fizycznym” (sygnału analogowego); – okresowość widma sygnału dyskretnego; – ekspansja (upsampling) i redukcja (downsampling) próbek i ich wpływ na widmo; – odtwarzanie sygnału z próbek (idealne i nieidealne) – (dodatkowo) efekty kwantyzacji sygnału. 1.1.1. Sygnał dyskretny W ćwiczeniu tym sygnał dyskretny x[n] będzie na ogół traktowany jako ciąg liczbowy {x(n)}, którego elementami są próbki x(n) (notacja z użyciem różnych nawiasów podkreśla rozróżnienie pomiędzy całym sygnałem a pojedynczą próbką). Najczęściej spotyka się sytuację, gdy sygnał x[n] jest wynikiem próbkowania pewnego sygnału analogowego xa (t). Warto zauważyć, że czasami takiego “analogowego prototypu” jednak nie ma, i sygnał jest od razu dyskretny. W typowym przypadku tzw. próbkowania równomiernego1 próbki x(n) są równe wartościom sygnału analogowego xa (t) mierzonym w chwilach tn = n · Ts , gdzie Ts jest okresem próbkowania. Zmienna n oznacza czas dyskretny tn unormowany względem okresu próbkowania Ts (patrz rys. 1.1). Ostatecznie więc operację próbkowania można w dzedzinie czasu zapisać wzorem x(n) = xa (n · Ts ) (1.1) 1 Nierównomierne próbkowanie stosuje się tylko w bardzo szczególnych zastosowaniach – np. w niektórych typach radarów. 3 4 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Rys. 1.1: Sygnał analogowy xa (t) i sygnał dyskretny x[n] otrzymamy przez próbkowanie xa (t) z okresem Ts Sygnały z czasem dyskretnym przetwarzane są zazwyczaj w urządzeniach cyfrowych – faktycznie jednak przetwarzane są sygnały cyfrowe xc [n] = Q(x[n]) , gdzie Q oznacza operację kwantowania, wprowadzającą pewne różnice pomiędzy x(n) i xc (n) – błędy kwantowania. W analizie problemów rozpatrywanych w tym ćwiczeniu nie będziemy uwzględniać błędów kwantowania, tzn. będziemy niejako utożsamiać sygnały dyskretne z cyfrowymi (liczba bitów typowego współczesnego przetwornika A/C jest na tyle duża, że uzasadnia przyjęcie zależności xc [n] = Q(x[n]) ≈ x[n] ). Jedynie w punkcie 1.3.2 spróbujemy eksperymentalnie zbadać wpływ kwantowania na jakość sygnału dźwiękowego. Teoria próbkowania rozwijała się bardzo dynamicznie w początku XX wieku. Zajmowało się nią wielu naukowców (Whittaker, Kotielnikow, Shannon, Gabor, Kupfmüller...), i do dziś w różnych tradycjach nazywa się ją różnymi nazwiskami. My na wszelki wypadek bedziemy używać nazwy “Twierdzenie o próbkowaniu” (The Sampling Theorem), chociaż np. matematycy woleliby “Kardynalne twierdzenie teorii interpolacji” (Cardinal Theorem of the Interpolation Theory)... 1.1.1.1. Próbkowanie sygnału Proces próbkowania sygnału ((1.1)) można matematycznie opisać jako wymnożenie przez ciąg impulsów jednostkowych (impulsów Diraca δ(t)) umieszczonych w chwilach nTs . Lekko zaniedbując poprawność matematyczną2 , zauważmy, że mnożenie sygnałów odpowiada splataniu ich widm. Widmem ciągu impulsów umieszczonych w odstępach czasowych Ts s(t) = +∞ X δ(t − nTs ) (1.2) n=−∞ jest ciąg impulsów umieszczonych w odstępach fs = 1/TS w częstotliwości (patrz rys. 1.2). Co więc stanie się z widmem sygnału wskutek próbkowania? Załóżmy, że próbkujemy sygnał analogowy xa (t), którego widmo oznaczymy jako Xa (f ). Splot danej funkcji Xa (f ) z przesuniętym o fs impulsem jednostkowym δ(f − fs ) odpowiada przesunięciu tej funkcji w prawo o odcinek o długości fs (rys. 1.3). Splot z całym ciągiem impulsów rozmieszczonych 2 Np. nie zastanawiamy się tu do jakiej klasy należą rozpatrywane sygnały, a więc jak konkretnie zdefiniowane jest pojęcie ich widma. 2016-03-16 20:55 Próbkowanie, odtwarzanie, decymacja, interpolacja Rys. 1.2: Ciąg impulsów jednostkowych i jego widmo Rys. 1.3: Splot widma sygnału z pojedynczą składową widma ciągu s(t) 5 6 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Rys. 1.4: Powielenie widma wskutek próbkowania sygnału dolnopasmowego w punktach k · fs spowoduje więc umieszczenie ciągu poprzesuwanych kopii Xa (f ) w tych punktach (patrz rys. 1.4). Przy próbkowaniu sygnału zazwyczaj nie chcemy utracić zawartej w sygnale informacji. Matematycznie można to ująć tak, że chcemy mieć możliwość odtworzenia sygnału z powrotem do postaci analogowej (jeśli się nie da, to znaczy, że gdzieś nam “zginęła” część informacji o oryginalnym sygnale). Intuicyjnie można zauważyć, że gdy w pewnym zakresie częstotliwości widma różnych kopii sygnału nałożą się (tj. zsumują), to już ich jednoznacznie nie rozdzielimy – a więc utracimy informację o sygnale. Z rys. 1.4 widać jasno, że, aby uniknąć nakładania się poprzesuwanych kopii widma Xa (f ), konieczne jest dobranie odpowiednio wysokiej częstotliwości próbkowania fs . Właściwy dobór zależy od tego, co wiadomo o widmie Xa (f ). Najczęściej zakłada się, że sygnał próbkowany jest dolnopasmowy, tj. jego widmo zawarte jest poniżej pewnej częstotliwości fmax . Pamiętając, że dla sygnału rzeczywistego widmo będzie rozciągało się od −fmax do +fmax możemy dojść do klasycznej reguły próbkowania – fs > 2fmax . Jeżeli z kolei mamy ustaloną częstotliwość próbkowania fs , to poprawnie spróbkujemy sygnały o częstotliwościach z zakresu do fs /2. Tę właśnie wartość nazywamy czasem częstotliwością Nyquista – po angielsku Nyquist frequency3 . Jeśli istnieje możliwość, że w sygnale znajdą się częstotliwości wyższe niż częstotliwość Nyquista, stosuje się przed układem próbkującym filtr dolnoprzepustowy (tzw. filtr antyaliasingowy). Przy praktycznym projektowaniu próbkowania w urządzeniu elektronicznym nie należy dobierać częstotliwości próbkowania zbyt bliskiej 2fmax , gdyż będzie to narzucać bardzo wysokie wymagania na filtry – antyaliasingowy przy próbkowaniu i interpolacyjny przy odtwarzaniu sygnału. Dla przykładu – dźwięki słyszalne zajmują pasmo do 20 kHz, natomiast prókuje się je z częstotliwością 44100 Hz (do zapisu na CD), 48 KHz (do zapisu w standardzie MP3) albo nawet 192 kHz (dla profesjonalnych systemów audio). 1.1.1.2. Podpróbkowanie W szczegónych zastosowaniach (np. próbkowanie wąskopasmowego sygnału o częstotliwości radiowej) możemy zastosować podpróbkowanie, czyli próbkować z częstotliwością mniejszą niż wynikająca z klasycznej reguły próbkowania. Otóż jeżeli sygnał próbkowany jest waskopasmowy – tj. jego widmo zawarte jest pomiędzy pewnymi dwoma częstotliwościami fmin i fmax , można przyjąć częstotliwość prób3 Uwaga: w terminologii anglojęzycznej uzywa się także terminu Nyquist rate, która oznacza minimalną wymaganą częstotliwość próbkowania (czyli 2fmax ). Aby było trudniej, niektóre podręczniki zamieniają znaczenie tych dwóch terminów. 2016-03-16 20:55 Próbkowanie, odtwarzanie, decymacja, interpolacja 7 Rys. 1.5: Powielenie widma wskutek podpróbkowania sygnału wąskopasmowego kowania mniejszą niż 2 · fmax (ale większą niż 2 · (fmax − fmin )). Technikę taką nazywa się podpróbkowaniem (ang. undersampling, bandpass sampling). Przy odtwarzaniu sygnału z takich próbek należy oczywiście uwzglednić wiedzę o tym, jakie pasmo zajmował sygnał (patrz rozdział 1.1.1.3 o odtwarzaniu sygnału). Powielenie widma w takim przypadku zachodzi tak, jak pokazano na rys. 1.5. Uwaga: Nie każda częstotliwość fs > 2 · (fmax − fmin ) zapewni, że powielone widma się nie nałożą – zawsze należy to przeanalizować tak, jak na rysunku 1.5 (i nie zapomnieć, że sygnał rzeczywisty zajmie dwa pasma: od −fmax do −fmin oraz od fmin do fmax ). 1.1.1.3. Odtwarzanie sygnału z próbek Nie w każdym zastosowaniu potrzebne jest odtworzenie (rekonstrukcja) sygnału analogowego z próbek (czyli z sygnału dyskretnego). Jednak to, czy da się z posiadanych próbek odtworzyć sygnał jest dowodem na poprawność próbkowania – jeśli da się sygnał odtworzyć, to oznacza, że w procesie próbkowania nie utraciliśmy żadnej informacji o sygnale. Jednoznaczne odtworzenie sygnału wymaga jednak posiadania (oprócz samego ciągu próbek) dodatkowej wiedzy o tym, jaka była częstotliwość próbkowania i jakie przyjęto założenie co do pasma zajętego przez widmo sygnału. Możliwe jest zrekonstruowanie – z tych samych próbek i przy tej samej częstotliwości próbkowania – różnych sygnałów, różniących się położeniem zajmowanego pasma na osi częstotliwości (patrz rys. 1.6 i rys. 1.7 ). Najczęściej przy próbkowaniu zakłada się, że sygnał jest dolnopasmowy. Wtedy odtworzenie sygnału z próbek polega na znalezieniu takiego sygnału xa′ (t), który jest dolnopasmowy i zgodny w punktach próbkowania z sygnałem dyskretnym – tj. xa′ (nTs ) = x(n). Twierdzenie o próbkowaniu mówi o tym, że przy takim założeniu rekonstrukcja jest jednoznaczna – tylko jeden sygnał spełni te wymagania i będzie to sygnał identyczny z oryginalnym sygnałem xa (t). Podobnie, przy założeniu, że szukamy sygnału pasmowego o widmie zawartym w pasmie od fmin do fmax , rekonstrukcja bedzie jednoznaczna i uzyskamy sygnał identyczny z oryginalnym (o ile założenie było prawdziwe, i częstotliwość próbkowania dobrana była poprawnie). Zagadnienie rekonstrukcji można sprowadzić do “odgadnięcia” (a formalnie – wyinterpolowania) wartości sygnału xa′ (t) pomiędzy punktami nTs . Zauważ, że musimy to już zrobić w dzedzinie sygnałów z czasem ciągłym. Dla przypadku sygnału dolnopasmowego idealna interpolacja polega na filtracji idealnym filtrem dolnoprzepustowym (z czasem ciągłym) – takim, który usunie składowe widma powielone wskutek próbkowania, a pozostawi składowe w zakresie −fs /2 do fs /2. Filtr taki 8 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 x(n) 1 0.5 0 0 1 2 3 4 5 6 7 8 n -0.5 -1 Rys. 1.6: Dwie spośród wielu różnych możliwości rekonstrukcji sygnału z tych samych próbek Rys. 1.7: Położenie dwóch sygnałów z rys. 1.6 na osi częstotliwości (czasem zwany filtrem Kupfmüllera4 ) ma odpowiedź impulsową postaci hinterp (t) = Sa(t/Ts ) (1.3) gdzie funkcja Sa(x) = sin(πx) (oznaczana także jako sinc(x) od słów sinus cardinalis)5 . πx Rekonstrukcję można więc opisać splotem (z czasem ciągłym) ∞ X ! t xa′ (t) = x[n] · δ (t − nTs ) ∗ Sa Ts n=−∞ (1.4) Splot ten można też rozpisać do postaci szeregu (zwanego szeregiem Kotielnikowa-Shannona): ∞ X t − nTs xa′ (t) = x[n] · Sa Ts n=−∞ (1.5) Przy opisie splotowym w stosunku do funkcji z którą się splata ciąg delt (tu jest nią Sa(t/Ts )) często używa się okreslenia jądro interpolacji – ang. interpolation kernel. 4 Karl Kupfmüller (6 października 1897 – 26 grudnia 1977), niemiecki inzynier elektryk. Zajmował się zagadnieniami telekomunikacji, metrologii, akustyki i elektrotechniki teoretycznej. Równolegle z Nyquistem i Shannonem (i niezależnie od nich) zajmował się teorią próbkowania. Ciekawostka: w latach 1928-1935 był wykładowcą (niemieckiej wówczas) Politechniki Gdańskiej. Życiorys jego z lat 1933-1945 tu przemilczymy – zainteresowanych historią odsyłamy do niemieckiej Wikipedii. 5 należy również do rodziny sferycznych funkcji Bessela pierwszego rodzaju. Ciekawostka: j0 (x) = sin(x) x 2016-03-16 20:55 Próbkowanie, odtwarzanie, decymacja, interpolacja 9 Rys. 1.8: Fragment odpowiedzi impulsowej filtru interpolacyjnego – na osi poziomej czas unormowany t/Ts Kształt odpowiedzi impulsowej filtru (jądra interpolacji) pokazano na rys. 1.8. Jak można zauważyć, filtr jest nieprzyczynowy, a jego odpowiedź impulsowa jest ciągła i nieskończona w czasie6 . Oznacza to, że w praktyce taki filtr można zrealizować tylko w sposób przybliżony (choćby dlatego, że do odtworzenia każdego odcinka sygnału potrzebne są wartości wszystkich próbek od n = −∞ do +∞). Warto zauważyć, że odpowiedź filtru ma wartość 1 w zerze, a 0 w chwilach nt/Ts – to oznacza, że w każdym punkcie, w których dysponujemy próbką sygnału, wynik splotu jest dokładnie równy wartości tej próbki. 1.1.1.4. Częstotliwość unormowana i pulsacja (częstość kołowa) unormowana Analizując sygnały okresowe posługujemy się często pojęciami częstotliwości i okresu sygnału. Pojęcia te dobrze określone są dla sygnałów z czasem ciągłym (“analogowych”). Spróbujmy zdefiniować odpowiednie pojęcia dla sygnałów z czasem dyskretnym, pamiętając, że taki sygnał jest po prostu ciągiem liczb x[n]. Zwróćmy uwagę, że indeks elementów tego ciągu n można nazwać czasem unormowanym n = t/Ts . Przyjrzyjmy się bliżej temu, co dzieje się, gdy sygnał analogowy xa (t) = cos ωt, gdzie ω = 2πf , spróbkujemy z okresem próbkowania Ts . Pobieramy próbki w chwilach t = nTs , a więc x(n) = cos ωnTs = cos nθ (1.6) gdzie θ = ω · Ts . Dla ustalonej wartości θ otrzymamy pewien ciąg liczbowy – jeśli wybierzemy inne wartości ω i Ts , ale zachowamy stały ich iloczyn θ, otrzymamy taki sam ciąg. A więc wartość θ 6 Dlatego na rysunku nie pokazano jej w całości... 10 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Rys. 1.9: Okresowość sygnału przy całkowitej oraz wymiernej wartości N0 definiuje nam “wygląd” ciągu – wartość tę nazywamy unormowaną pulsacją lub unormowaną częstością kołową, podobnie jak ω nazywamy pulsacją lub częstością kołową. Podobnie jak w praktyce wygodniej jest posługiwać się częstotliwością sygnału analogoω , często też wolimy używać pojęcia częstotliwości unormowanej sygnału okrewego f = 2π sowego z czasem dyskretnym fn = θ = f · Ts = f /fs 2π (1.7) (gdzie fs = 1/Ts to częstotliwość próbkowania). Sygnał dyskretny x(n) można wtedy opisać wyrażeniem x(n) = cos n2πfn . Zwróćmy uwagę, że wszystkie wielkosci unormowane (czestotliwość, częstość kołowa, czas) są bezwymiarowe. 1.1.1.5. Okres sygnału dyskretnego Niestety, z okresem sygnału dyskretnego wiąże się pewien problem definicyjny. Otóż dla sygnału xa (t) z czasem ciągłym okres zdefiniowany jest jako najmniejsza liczba T, dla której przy każdym t ∈ R jest spełnione xa (t + T ) = xa (t). Podobna definicja obowiązuje dla sygnału z czasem dyskretnym x(n) – okres to najmniejsza liczba N taka, że przy każdym n ∈ Z (gdzie Z to zbiór liczb całkowitych) jest spełnione x(n + N ) = x(n) (1.8) I tu mamy problem – skoro n ∈ Z, to powyższe wyrażenie ma sens tylko dla N całkowitego – w “punkcie” o niecałkowitym indeksie n próbka x(n) nie istnieje. Jeśli wyrazimy okres T sygnału analogowego xa w okresach próbkowania, to otrzymamy pewną liczbę N0 = T /Ts , która niekoniecznie jest całkowita. Mogą zachodzić trzy przypadki: – N0 jest liczbą całkowitą – wtedy ciąg x[n] jest okresowy z okresem N = N0 ; N – N0 jest liczbą wymierną N0 = M (gdzie N, M ∈ N), okresem ciągu x[n] jest N – dopiero w M okresach sygnału analogowego zawiera się całkowita liczba próbek; – N0 nie jest liczbą wymierną – ciąg x[n] nie jest okresowy, mimo, że oryginalny sygnał xa (t) był okresowy 2016-03-16 20:55 Próbkowanie, odtwarzanie, decymacja, interpolacja 11 Rys. 1.10: Redukcja próbek dla K = 4 Rys. 1.11: Ekspansja z wypełnieniem zerami (K = 4) Przykład całkowitego N0 = 4 oraz wymiernego N0 = 10/3 przedstawiony jest na rys. 1.9. Należy jednak podkreślić, że są to przypadki idealne, a w praktycznych układach próbkujących idealna synchronizacja po prostu nie zachodzi (chyba, że generator sygnału i generator chwil próbkowania pracują z tym samym oscylatorem synchronizującym). Tak więc w praktyce zazwyczaj należy założyć, że nic nie wiadomo o wymierności N0 . 1.1.2. Redukcja i ekspansja próbek W drugiej części ćwiczenia bedziemy badali wpływ redukcji i ekspansji na widmo sygnału. Należy przypomnieć, że redukcja próbek polega na zmniejszeniu liczby próbek w taki sposób, że w sygnale pozostaje co K-ta próbka (patrz rys. 1.10) – z każdych K zostaje jedna, a K − 1 próbek jest usuwanych. Ekspansja jest czynnością odwrotną – do sygnału dodaje się K − 1 próbek pomiędzy każdymi dwoma dotychczasowymi próbkami. Dodane próbki mogą mieć wartość zerową (patrz rys. 1.11) lub skopiowaną z sąsiedniej próbki (patrz rys. 1.12) – ten drugi przypadek matematycznie jest zlożeniem ekspansji z interpolatorem zerowego rzędu. 12 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Rys. 1.12: Ekspansja z powieleniem próbek (K = 4) Liczbę K nazywa się odpowiednio współczynnikiem (albo stopniem, rzędem) redukcji bądź ekspansji. Ekspansja próbek często jest (nieściśle) nazywana interpolacją. Faktycznie interpolacja jest to filtracja dolnoprzepustowa – operacja, którą należy wykonać po ekspansji, aby uzyskać sygnał dolnopasmowy zgodny z sygnałem przed ekspansją. Często złożenie tych operacji określane jest mianem “nadpróbkowania” (choć i ten termin nie jest jednoznaczny – może oznaczać też próbkowanie z częstotliwością znacznie większą niż wymagana przez Twierdzenie o próbkowaniu). Podobnie, decymacją najczęściej określa się złożenie filtracji dolnoprzepustowej (antyaliasingowej) z redukcją próbek. Niektórzy autorzy decymację utożsamiają z samą redukcją7 . Zwróć uwagę, że redukcja i ekspansja odpowiadają zmianie częstotliwości próbkowania sygnału ciągłego. 1.1.2.1. Wpływ redukcji próbek na widmo sygnału Przeanalizujmy przykładowo wpływ dwukrotnej (K = 2) redukcji na widmo sygnału dyskretnego. Najprościej odnieść się tu do oryginalnego sygnału z czasem ciągłym, przy klasycznym założeniu że był on dolnopasmowy. Widmo sygnału dyskretnego przed redukcją odpowiadało powielonemu co fs = 1/Ts widmu sygnału analogowego. Po usunieciu próbek otrzymujemy sygnał spróbkowany co 2Ts – a więc jego widmo jest powielone co fs /2 (patrz rys. 1.13). 7 Ostateczny wniosek z tych rozważań jest taki, że czytając jakiś tekst zawsze trzeba zwracać uwagę na kontekst, a pisząc – w bezpieczny sposób zawiadomić czytelnika jak ma interpretować terminy niejednoznaczne. My więc (tak, jak to było powyżej opisane) będziemy uważać redukcję i ekspansję za operacje na samych chwilach próbkowania, a decymację i interpolację – za całość tego, co należy zgodnie ze sztuką wykonać, gdy chcemy zmienić liczbę próbek w sygnale pochodzącym z próbkowania sygnału ciągłego i uzyskać sygnał nadal odpowiadający oryginalnemu. 2016-03-16 20:55 Próbkowanie, odtwarzanie, decymacja, interpolacja 13 Rys. 1.13: Wpływ redukcji próbek na widmo Aby widma po redukcji się nie nakładały, trzeba zadbać o ograniczenie widma przed redukcją do ±fs /4 (co odpowiada częstotliwości unormowanej fn < 1/4) – na rysunku pokazano sytuację, w której widmo już zostało ograniczone. Podobnie będzie przy wyższym stopniu redukcji K – pojawią się dodatkowe kopie widma przesunięte do pozycji fs Kk , k = 1 . . . K − 1. 1.1.2.2. Wpływ ekspansji próbek na widmo sygnału Aby zrozumiec wpływ ekspansji na widmo, załóżmy na początek, że udało się po dwukrotnej (K = 2) ekspansji idealnie odgadnąć (wyinterpolować) wartości dodanych próbek. Wtedy otrzymujemy sygnał odpowiadający spróbkowaniu oryginalnego sygnału xa (t) z wyższą częstotliwością 2fs – a więc widmo ma kształt jak na rys. 1.14. Rys. 1.14: Widmo po ekspansji z idealną interpolacją Jeśli brakujących próbek nie odgadniemy, tylko wstawimy tam wartości zerowe, uzyskamy sygnał, w którym “brakuje” co drugiej próbki. Ten brak możemy opisać składając nasz sygnał w połowie z sygnału “idealnego” a w połowie z sygnału “idealnego” zmodulowanego przez ciąg (−1)n = (ejπ )n . Przy takim przedstawieniu widać, że widmo naszego sygnału będzie połową sumy widma sygnału idealnego i zmodulowanego. Modulacja w dziedzinie czasu to przesunięcie widma – π w tym wypadku o π ( względem podwojonej częstotliwości próbkowania – czyli 2π 2fs = fs ). Efekt pokazano na rys. 1.16. Podobnie będzie przy wyższym stopniu ekspansji K – przy idealnej interpolacji pierwsza kopia widma odsunie się do Kfs , a przy wstawianiu zer pojawią się dodatkowe kopie widma przesunięte do pozycji kfs , k = 1 . . . K − 1. Pojawia się pytanie – czy można w praktyce z sygnału jak na rys. 1.16 uzyskać sygnał idealny, jak na rys. 1.14? Otóż można uzyskać sytuację prawie idealną, stosując po ekspansji filtr 14 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Rys. 1.15: Sygnał z brakującymi próbkami (w przykładzie użyto sygnał stały) Rys. 1.16: Widmo po ekspansji z dodaniem zerowych próbek interpolacyjny (a słowo prawie znalazło się tu, ponieważ praktyczny filtr interpolacyjny nie jest idealny). Konstrukcja takiego filtru jest podobna, jak filtru do odtwarzania sygnału analogowego: potrzebny jest filtr dolnoprzepustowy – tyle, że tu jest to filtr z czasem dyskretnym. 1.1.3. Zadania do pracy własnej studenta Podobne zadania mogą znaleźć się na wejściówce. Nie dotyczy to zadań oznaczonych tu jako ”trudne”. 1) Jakie pasmo zajmuje sygnał akustyczny (ew. skorzystaj z literatury/internetu)? Jaka z tego wynika minimalna częstotliwość próbkowania? 2) Nadajniki radia FM nadają w pasmie od 88 do 108 MHz. Rozważ realizację odbiornika FM z bezpośrednim przetwarzaniem A/C. Odbiornik taki składa się ze wzmacniacza niskoszumnego po którym próbkuje się od razu sygnał o częstotliwości radiowej. Dalszy ciąg przetwarzania (zaczynając od filtru pasmowego wybierającego stację) odbywa się cyfrowo. a) Jaka jest minimalna częstotliwość próbkowania takiego sygnału przy próbkowaniu dolnopasmowym? b) trudne Dobierz możliwie małą częstotliwość próbkowania przy podpróbkowaniu (próbkowaniu środkowopasmowym). c) Jeśli nie zrobiłeś zadania b), przyjmij fs = 80 MHz. Naszkicuj widmo sygnału spróbkowanego środkowopasmowo, aby sprawdzić, że dobór jest poprawny (nie powoduje aliasingu). Ogranicz swój szkic do zakresu np. od −120 do 120 MHz 3) Sygnał sinusoidalny o częstotliwości 6 kHz został spróbkowany przy fs = 48 kHz. a) Wyznacz okres sygnału dyskretnego, unormowaną częstotliwość fn i unormowaną częstość kołową θ. 2016-03-16 20:55 Próbkowanie, odtwarzanie, decymacja, interpolacja 15 b) Jak zmieni się częstotliwość unormowana, gdy sygnał zdecymujemy dwukrotnie (tj. zredukujemy próbki ze współczynnikiem redukcji równym 2, przedtem dokonując odpowiedniej filtracji antyaliasingowej)? c) Jaki sygnał otrzymamy, gdy dokonamy ekspansji próbek (z idealną interpolacją) ze współczynnikiem ekspansji równym 2? d) trudne Jaki sygnał otrzymamy przy ekspansji bez interpolacji (rozważ sytuację z dodaniem zer lub z powieleniem)? 4) Wartość sygnału xa′ odtworzonego w ustalonym punkcie t jest kombinacją liniową próbek sygnału x[n] xa′ (t) = ∞ X x[n] · an n=−∞ gdzie współczynniki an można wyliczyć ze wzoru (1.5). Oblicz wartości współczynników ai dla i = −3 . . . 3, przy pomocy których oblicza się a) wartość xa′ (t) w punkcie t = 0 i w punkcie t = Ts b) wartość xa′ (t) w punkcie t = Ts /2 czyli w połowie miedzy próbką x(0) i x(1) 1.2. Dostępny sprzęt i oprogramowanie R 1.2.1. Skrypty MATLABa⃝ Do wykonania ćwiczenia przydatne będą opisane poniżej skrypty, które powstały specjalnie na potrzeby tego laboratorium. – Do pobierania danych z karty dźwiękowej wykorzystuje się funkcję LCPS_getdata(N,K,Ts). Funkcję tę stworzono, aby uniezależnić się od zmieniających się konwencji czytania danych w różnych wersjach Matlab'a. Jej parametry mają nastepujące znaczenie: N – liczba próbek do pobrania (długość bloku danych) K – liczba powtórzeń (liczba pobranych bloków) – zazwyczaj 1 Ts – okres próbkowania (w sekundach). Należy pamietać, że karta dźwiekowa implementuje tylko pewne stałe częstotliwości próbkowania i podane przez użytkownika wartości będą zaokrąglone. Informacje na ten temat można uzyskać wykonując polecenie » help LCPS_getdata. Dodatkowe, opcjonalne parametry funkcji LCPS_getdata() umożliwiają zmianę kanału, z którego pobierane są próbki – ale domyślnie jest to kanał karty dźwiękowej, dołączony do gniazda BNC “WE 1” w kasecie (patrz rys. 1.17). – Wysyłanie próbek do karty w celu odtworzenia obsługuje funkcja LCPS_putdata(N,Ts) – przy domyślnych wartościach parametrów opcjonalnych sygnał pojawia się na gnieździe BNC “WY 1” w kasecie. – Funkcja Sa() zaimplementowana jest w zestawie standardowych funkcji Matlab'a pod nazwą sinc(). – Standardowa funkcja fftshift() zamienia miejscami połówki wektora. Efekt zastosowania jej do obliczonego widma sygnału dyskretnego odpowiada zamianie widma z zakresu 16 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Rys. 1.17: Panel gniazd BNC dołączonych do karty dźwiękowej (0, 2π) do zakresu (−π, π). Taka możliwość wynika z okresowości widma sygnału dyskretnego. Uwaga: jesli argument jest macierzą, zamienione zostaną ćwiartki (lewo-prawo i góra-dół). Rys. 1.18: Działanie funkcji fftshift na przykładzie wektora 16-elementowego – Piękny wykres FFT w zakresie od −π do π można uzyskać samemu, wykorzystując fftshift(), ale w razie pośpiechu zaleca się użyć funkcji LCPS_dtf(x, K). Funkcja oblicza i wyświetla K-punktową DTF z sygnału x. Wskazówka: Niestety, K jest parametrem obowiązkowym. Jeśli nie wiesz, jaką wartość tu podać, podaj length(x). 1.2.2. Aparatura W ćwiczeniu student będzie posługiwać się generatorem sygnałowym jako źródłem sygnałów rzeczywistych (rys. 1.19). Najważniejsze uwagi co do obsługi generatora: 2016-03-16 20:55 Próbkowanie, odtwarzanie, decymacja, interpolacja 17 – Wyłącznik jest wspólny dla zasilacza, generatora i częstościomierza. Multimetr ma własny wyłącznik (bo jest zasilany z bateryjki 9V). – Aby mierzyć częstotliwość generatora, trzeba ustawić wejscie (“count”) na “int” (wcisnąć), oraz funkcję częstościomierza na “freq”. – Nad pokrętłem amplitudy jest przycisk “Att 20 dB”. Jeśli jest wyciśnięty, można uzyskać napięcia od ok. 2 do 20 Vpp . Po wcisnięciu jest 10x mniej. – Warto sobie ustawić czas zliczania (otwarcia bramki - “gate”) na 0.1 s (wielokrotnym wciskaniem przycisku “gate”) – pomiar będzie mniej dokładny, ale częsciej odświeżany. Rys. 1.19: Panel czołowy generatora/częstościomierza NDN Sygnały będą próbkowane za pomocą dwóch różnych układów. a) Karty dźwiękowej komputera, która podłączona jest przez gniazda BNC w kasecie laboratoryjnej (rys. 1.17)– karta zawiera przetworniki A/C typu sigma-delta z bardzo silnym R filtrem antyaliasingowym i pozwala na łatwe wczytanie próbek do MATLABa⃝. b) Interfejsu akwizycji danych pomiarowych firmy NI – przetworniki interfejsu nie zawierają filtrów antyaliasingowych; interfejs jest w łatwy sposób obsługiwany poprzez pakiet R Na rys. 1.20 pokazano typowe podłączenie – żółty kabel podłączony jest do LABVIEW⃝. wyjścia analogowego AO0, a czerwony – do wejścia analogowego AI2. We wszystkich zadaniach zaleca się używać oscyloskopu do podglądu sygnału analogowego przed spróbkowaniem. Przykładowy sposób podłączenia aparatury z użyciem karty dźwiękowej (nadający się do większości zadań) pokazano poniżej (rys. 1.21). Do podglądu sygnału wejściowego wykorzystuje się kanał 1 oscyloskopu, ewentualny sygnał odtworzony jest zobrazowany kanałem 2 oscyloskopu. Uwaga: należy pamiętać, że w tym ćwiczeniu przetwarzanie odbywa się off-line (tj. po zarejestrowaniu sygnału), a więc jednoczesne porównywanie sygnału w kanale 1 i 2 oscyloskopu nie ma sensu – nawet jeśli w czasie odtwarzania sygnału podglądamy sygnał wejściowy i nie zmieniliśmy jego parametrów, to żadne zależności fazowe pomiędzy oglądanymi sygnałami nie istnieją. 18 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Rys. 1.20: Typowe podłączenie interfejsu NI przez moduł BNC-2120 Rys. 1.21: Przykładowe połączenie aparatury z przetwornikiem karty dźwiękowej 1.3. Eksperymenty do wykonania w laboratorium Odpowiedz Dla zróżnicowania zadań wykonywanych przez studentów, w opisie zadań będziemy się posługiwali parametrem N s który jest numerem stanowiska laboratoryjnego. Wykresy sygnałów dyskretnych zaleca się rysować na ekranie przy pomocy linii z zaznaczonymi położeniami próbek (podając trzeci parametr – styl linii – do funkcji rysującej plot(n,x,'-*'). Można wtedy łatwo stwierdzić gdzie naprawdę znajdują się próbki. Poprawnie byłoby nie łączyć punktów liniami, ale linia ułatwia zauważenie kolejności próbek.8 Odpowiedz na pytanie: Dlaczego łączenie punktów liniami nie jest poprawne formalnie? Wskazówka: Dysponując tylko ciągiem próbek sygnału – co wiemy o jego wartościach pomiędzy chwilami próbkowania? 8 Poprawne jest także użycie funkcji stem(), Ze względu jednak na wątpliwe efekty wizualne zalecamy to tylko w uzasadnionych przypadkach. Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 19 1.3.1. Sygnał dyskretny i jego widmo 1.3.1.1. Symulowany i rzeczywisty sygnał dyskretny Ustaw generator tak, aby otrzymać sygnał sinusoidalny o częstotliwości fa wybranej zgodnie z numerem stanowiska z tabeli 1.1 i amplitudzie okolo 5 V. Zmierz (orientacyjnie) parametry sygnału: amplitudę, częstotliwość, okres – przy pomocy oscyloskopu9 Zanotuj wartości amplitudy, częstotliwości i okresu: założoną oraz zmierzoną. Zanotuj Tabela 1.1 Nr stan. 1 2 3 4 5 6 7 8 9 10 11 12 13 fa [Hz] 2400 4800 1800 1200 600 6000 480 720 7200 1440 9600 2880 1920 Oblicz, jakie powinny być unormowane wartości parametrów sygnału (częstotliwość fn , okres Tn ) po jego spróbkowaniu z częstotliwością próbkowania fs = 48 kHz. Zanotuj obliczone wartości. Wartości te będą używane w następnych zadaniach. R 200 próbek sygnału o obliczonych parametrach. NaZasymuluj za pomocą MATLABa⃝ rysuj na ekranie wykres sygnału. Wskazówka: Możesz otworzyć na ekranie tę instrukcję i kopiować fragmenty kodu z PDF'a do okna komend Matlab'a. N=200; n=0:(N-1); xs=%% tu wstaw obliczenie próbek sygnału figure(1) plot(n,xs,'*-') title('Symulowany sygnal'); xlabel('Indeks czasowy probki') ylabel('Wartość próbki') W przykładowym kodzie wektor próbek sygnału jest zapisany w zmiennej xs. Nie usuwaj i nie nadpisuj tej zmiennej – w dalszym ciągu bedziemy porównywali ten (idealny) sygnał z rzeczywistym. Wykonaj połączenia według rys. 1.21 i zarejestruj rzeczywisty sygnał z generatora (liczba próbek jak w poprzednim punkcie, częstotliwość próbkowania jak założona do obliczeń, ustawiona z dokładnością ok. dwóch cyfr znaczących10 ). Narysuj wykres na ekranie. Zaobserwuj sygnał (wejsciowy) na oscyloskopie. Ts=%% tu oblicz okres próbkowania xg=LCPS_getdata(N,1,Ts); figure(2); plot(n,xg,'-*') ... 9 Pisząc “amplituda” mamy na myśli połowę napięcia międzyszczytowego – jest to konwencja typowo przyjmowana dla sygnałów bez składowej stałej (np. dźwiękowych). Zwróć uwagę, że oscyloskop domyślnie zmierzy napięcie międzyszczytowe (peak-to-peak), a funkcja oscyloskopu Amplitude też nie odpowiada przyjętej przez nas konwencji. Uwaga: meteorolodzy pod pojęciem Amplituda temperatur rozumieją całą wartość międzyszczytową (a my tylko pół). 10 Nie staraj się uzyskać zbyt idealnych ustawień – w praktyce sygnały nie są idealne, częstotliwości generatorów zmieniają się z temperaturą i czasem, na odebrane sygnały może mieć wpływ efekt Dopplera... Zanotuj 20 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Uwaga. Wynik LCPS_getdata() jest unormowany do zakresu napięć przetwornika (ok. ±10 V) – tj. amplitudzie 5 V odpowiada wartość około 0.5. Zanotuj Naszkicuj Zanotuj Zauważ i zanotuj różnice między sygnałem symulowanym i rzeczywistym. ✿✿✿✿✿✿✿✿✿✿ Naszkicuj ✿✿✿✿ 1-2 okresy sygnału rzeczywistego wybrane tak, aby pokazać najwyraźniejsze nieidealności. ✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿ Na podstawie wykresu oszacuj i zanotuj liczbę próbek w okresie sygnału symulowanego i rzeczywistego. Odpowiedz na pytanie: Czy można dokładnie okreslić okres sygnału rzeczywistego? Zadanie extra Zmień kod rysujący wykres dla sygnału rzeczywistego, aby oś czasu była wyskalowana w jednostkach czasu fizycznego. Odpowiedz figure(3); t=% tu wstaw obliczenie wektora czasu z numerów próbek n ... plot(t, xg, '*-') Zanotuj Zanotuj fragment kodu obliczania wektora czasu. 1.3.1.2. Okresowość widma sygnału dyskretnego Narysuj na ekranie widma (amplitudowe) obu sygnałów (symulowanego i rzeczywistego) % w poniższym kodzie użyj odpowiednio xs lub xg x=xs; figure(4); Nx=length(x); k=0:(Nx-1); %indeksy próbek widma plot(k,abs((fft(x)))); % Matlab domyślnie indeksuje od 1 % dlatego potrzebne jest tu k, aby oś pozioma była indeksowana od 0 %narysujmy to samo z zerem pośrodku figure(5) k1=floor(-Nx/2):floor(Nx/2)-1; plot(k1,abs(fftshift(fft(x)))); Zanotuj Odpowiedz Zanotuj Naszkicuj Odpowiedz Zweryfikuj ze swą wiedzą położenie maksimum widma. Zanotuj indeks maksimum i odpowiadającą mu częstotliwość unormowaną oraz rzeczywistą. Odpowiedz na pytania: 1) Dlaczego widmo ma dwa wierzchołki? Jakim częstotliwościom one odpowiadają? 2) Dlaczego w przykładowym kodzie użyto funkcji abs()? 3) Dlaczego w drugim przykładzie użyto funkcji fftshift()? Uzupełnij tabelę 1.2 w sprawozdaniu, pokazując odpowiedniość indeksu częstotliwościowego k, częstotliwości kątowej unormowanej θ i częstotliwości fizycznej f . Zadanie extra Zasymuluj sygnały o częstotliwościach 2fn , 0.5−fn , 0.5+fn , 1.0−fn , 1.0 + fn , 3.0 ± fn . Narysuj na ekranie wykresy czasowe i widma tych sygnałów. ✿✿✿✿✿✿✿✿✿✿ Naszkicuj kilka wybranych. Odpowiedz na pytanie: dlaczego w niektórych przypadkach dla różnych ✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿ parametrów uzyskano takie same wykresy? Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 21 Tabela 1.2: Tabela indeksów do wypełnienia w sprawozdaniu Indeks θ f [Hz] -1 −π 0 +1 +2 −π/2 π -12000 R Analizator taki doUżyj analizatora widma sygnału zbudowanego na bazie LABVIEW.⃝ stępny jest w postaci instrumentu wirtualnego “Spectrum Analyzer”, uruchamianego z folderu LCYPSVIs (lub przez skrót na pulpicie). Ustaw parametry: wybór wejścia – Dev1/ai2; jest to numer kanału wejściowego (zakładamy, że sygnał jest podłączony do wejscia AI2); częstotliwość próbkowania – wybierz wartość (10+numer stanowiska) kHz liczba próbek – 200 liczba zer – 0 (zero) Wciśnij przełącznik FFTShift aby oś pozioma na wykresie wyskalowana była w wartościach częstotliwości unormowanej od −0.5 do +0.5. Użyj skali liniowej lub logarytmicznej (po przełączeniu warto nacisnąć “AutoFit”). Wskazówka: Bardzo przydatne są funkcje “Pauza” i mozliwość rozciągnięcia wykresu w poziomie (kliknij “lupę”) oraz rysowania z zaznaczeniem punktów danych (kliknij okienko z tytułem wykresu “RAW”) – patrz rys. 1.22. Rys. 1.22: Włączanie rozciągania wykresu w poziomie oraz rysowania z zaznaczaniem punktów danych Zanotuj Zanotuj jaka była częstotliwość próbkowania i oblicz częstotliwość Nyquista. Ustaw częstotliwość sygnału w zakresie Nyquista. Oprócz przebiegu i widma sygnału dyskretnego (na ekranie komputera), oglądaj także przebieg czasowy oraz widmo sygnału analogowego 22 Odpowiedz Odpowiedz Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 na oscyloskopie. W tym celu włącz funkcję analizatora widma na oscyloskopie; po wciśnięciu przycisku “Maths” wybierz (wciskając przyciski pod ekranem i obracając pokrętło wyboru): – operator: FFT – source: 1 – span: 200 kHz – center: 0 kHz. Stopniowo zwiększaj częstotliwość poza granicę Nyquista, aż do częstotliwości większych niż podwojona częstotliwość próbkowania. Odpowiedz na pytanie: Co dzieje się z widmem sygnału spróbkowanego, gdy częstotliwość sygnału przekracza częstotliwość Nyquista, a co, gdy przekracza częstotliwość próbkowania? Jak wygląda sygnał w tych sytuacjach (zwróć uwagę na okres sygnału po spróbkowaniu!). R zasymuluj sygnał poZadanie extra Korzystając z arytmetyki zespolonej MATLABa⃝, jn2πfn staci e przy fn tej co zwykle. Narysuj wykres czasowy i widmo. Odpowiedz na pytanie: Ile widzisz wierzchołków widma i dlaczego? 1.3.2. Efekty kwantowania Zasymuluj 50 próbek sygnału sinusoidalnego o częstotliwości unormowanej 3/50. Skwantuj sygnał do Nb bitów. Przyjmij wartość Nb równą 4 na stanowiskach o numerze parzystym albo 5 na nieparzystym. Nb=%tu ustaw liczbę bitów n=%tu utworzenie indeksu czasowego x=%tu generacja Twojego sygnału figure(1) plot(n,x,'-*'); nq=2^Nb;%liczba poziomów kwantowania q=2/nq %wartośc kwantu xq=q*round(x/q); figure(2) plot(n,x,'-*',n,xq,'-') Odpowiedz Odpowiedz na pytanie: dlaczego w przykładowym kodzie wartość kwantu jest dwa razy większa niż odwrotność liczby poziomów? Jaki zakres wartości sygnału przyjęto przy konstrukcji tego kodu? Wskazówka: Naszkicuj sobie poziomy kwantowania np. przy Nb=3 Zanotuj Naszkicuj Obejrzyj widmo sygnału na ekranie, porównaj z widmem sygnału bez kwantowania, zanotuj zauważone różnice. Powtórz eksperymenty zmieniając liczbę bitów, naszkicuj wybrane widmo na którym wi✿✿✿✿✿✿✿✿✿ doczne są efekty kwantowania. Zarejestruj kilka sekund sygnału mowy (połączenie mikrofonu poprzez przedwzmacniacz – patrz rysunek rys. 1.23). Skwantuj sygnał i odtwórz go przez głośnik (uwaga – przed kwantowaniem sprawdź, jaka jest amplituda sygnału i dostosuj do niej sposób kwantowania) (Extra: zrealizuj to w LabView aby działało w czasie rzeczywistym) Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 23 Rys. 1.23: Połączenie mikrofonu poprzez przedwzmacniacz Eksperymentując z liczbą bitów kwantowania, spróbuj określić i zanotować minimalną liczbę bitów potrzebną: Zanotuj – aby mowa była zrozumiała, – aby mowa brzmiała przyjemnie. 1.3.3. Redukcja i ekspansja próbek 1.3.3.1. Redukcja próbek Przed dalszymi eksperymentami warto pozbyć się z ekranu nadmiaru wykresów. » close all Nie czyścimy natomiast środowiska – będziemy wykorzystywali sygnały zasymulowane i zarejestrowane w pierwszej części ćwiczenia. Do poniższych eksperymentów możesz uzyć sygnału symulowanego (powinien wciąż być w zmiennej xs), albo zarejestrowanego (w zmiennej xg). Jeśli sygnały się skasowały, wytwórz je ponownie według części 1.3.1.1. Aby nie szukać daleko, przepisz z pierwszej częsci protokołu częstotliwości - sygnału i próbkowania. Oblicz i wyświetl widmo sygnału (możesz użyć LCPS_dtf(xs, length(xs))). Zanotuj położenie (indeks lub częstotliwość unormowaną) maksimów widma. Usuń z sygnału symulowanego co drugą próbkę. Zanotuj Zanotuj xds=xs(1:2:end); Zanotuj Oblicz i zanotuj jakiej częstotliwości próbkowania odpowiada teraz ciąg próbek. Narysuj na ekranie widmo i wykres czasowy (na oddzielnych rysunkach). Zaobserwuj indeks maksimum widma. Odpowiedz na pytanie: Jak redukcja wpłynęła na widmo? Odpowiedz 24 Zanotuj Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Zwiększ stopień redukcji tak, aby nie były spełnione założenia twierdzenia o próbkowaniu. Zanotuj jaka teraz jest efektywnie częstotliwośc próbkowania, naszkicuj widmo. ✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿ Odpowiedz na pytanie: Jakie niebezpieczeństwa czyhają przy redukcji próbek? Naszkicuj 1.3.3.2. Ekspansja próbek i interpolacja Odpowiedz Ponownie zamknij okna wykresów. Sprawdź, czy w zmiennej xs nadal masz sygnał o parametrach wybranych na początku poprzedniego punktu. Zwiększ dwukrotnie liczbę próbek w sygnale (dokonaj ekspansji) metodą dodania zer pomiędzy istniejącymi próbkami. %sztuczka na dodanie zerowych próbek pomiedzy istniejącymi N=length(xs); U=2; % współczynnik ekspansji %przygotuj wyzerowany wektor na wynik xu=zeros(1,U*N); % "u" jak "upsampled" xu(1:U:end)=xs; % w xu nieprzypisane elementy pozostaną zerowe plot(xu,'-x'); figure; %narysuj widmo sam, ale w nowym oknie Naszkicuj Odpowiedz Narysuj sygnał i widmo; ✿✿✿✿✿✿✿✿✿ naszkicuj✿✿✿✿✿✿✿ widmo w protokole. Odpowiedz na pytania: – Jakiej częstotliwości próbkowania odpowiada teraz ciag próbek? – Skąd wziął się prążek na częstotliwości powyżej 0.25? (uwaga, matematyka się kłania) Dokonaj ekspansji z powieleniem próbek sąsiednich (sygnał schodkowy). %sztuczka na powielenie próbek xs=xs(:).'; %teraz xs na pewno będzie wektorem poziomym U=2; % współczynnik ekspansji xp=ones(U,1)*xs; % macierz U wierszy na length(xs) kolumn xp=xp(:).'; % tworzymy wektor łącząc kolumny i transponujemy go figure; ... Naszkicuj Odpowiedz Narysuj sygnał, narysuj widmo i naszkicuj je w protokole. Odpowiedz na pytanie: Dlaczego ✿✿✿✿✿✿✿✿✿ teraz prążek na wysokich częstotliwościach ma mniejszą amplitudę? Zwiększ 4-krotnie liczbę próbek (ekspansja z dodaniem zer) i następnie oblicz wartości dodanych próbek przy założeniu dolnopasmowości oryginalnego sygnału (splot conv(x,h) z jądrem sinc – utnij jądro np. do zakresu [-16:16])11 : xu=%tu powtórz odpowiednio sztuczkę na dodanie zerowych próbek sinc16=sinc([-16:16]/4); plot([-16:16],sinc16); xu_interp16=conv(xu,sinc16); Zanotuj Odpowiedz Wyświetl na ekranie sygnał z wyinterpolowanymi próbkami oraz jego widmo. Zanotuj wartości resztkowych prążków widma na wybranej (np. drugiej12 ) harmonicznej sygnału podstawowego. Odpowiedz na pytania: 11 12 Zauważ, że splot z h[n] i filtracja filtrem SOI o odpowiedzi h[n] jest to matematycznie ta sama operacja! Pamiętamy, że “pierwsza harmoniczna” to po prostu podstawowy sygnał. 2016-03-16 20:55 Próbkowanie, odtwarzanie, decymacja, interpolacja 25 – Dlaczego tak właśnie dobrano skalowanie funkcji sinc w czasie? (pomóż sobie rysunkiem sinc - zauważ gdzie są przejscia przez zero) – Dlaczego na początku i na końcu sygnał wygląda nieszczególnie? Spróbuj też obliczyć widmo z pominięciem początkowych i końcowych próbek. Zadanie extra Powtórz interpolację, tym razem używając jądra sinc uciętego szerzej – np. do zakresu [-32:32]. Porównaj wartości resztkowych prążków z zanotowanymi z poprzedniego punktu. Zadanie extra Wyinterpoluj próbki inaczej – poprzez splot z jądrem sinc zmodulowanym cosinusoidą o częstotliwości unormowanej 5/16. Zanotuj sinc32mod516=sinc([-32:32]/8).*cos(2*pi*5/16*[-32:32]); plot([-16:16],sinc32mod516); xu_interp32mod516=conv(xu,sinc32mod516); Odpowiedz Odpowiedz na pytania: . . . Ponieważ jest to zadanie extra, sam(a) spróbuj opisać co się stało i dlaczego tak. A jako super extra – uzasadnij, dlaczego takie parametry liczbowe zaproponowaliśmy. Pomoże Ci w tym przyjrzenie się widmom wszystkich użytych sygnałów. 1.3.3.3. Ekspansja próbek i interpolacja – sygnał rzeczywisty Zarejestruj sygnał sinusoidalny o dowolnie wybranej częstotliwości fa < 4 kHz przy fs = 48 kHz i o czasie trwania ok. 4 sekund. Zanotuj wybrane wartości fa i fs . Wykonaj redukcję tak, aby efektywna częstotliwość próbkowania po redukcji wciąż spełniała twierdzenie o próbkowaniu z niewielkim marginesem (zachowaj sygnał zredukowany i oryginalny). Odsłuchaj sygnał oryginalny. » LCPS_putdata(xg*10,1/48000); Dokonaj ekspansji z powrotem do oryginalnej liczby próbek, wypełniając dodane próbki zerami. Obejrzyj sygnał na oscyloskopie – aby uzyskac stabilny obraz wybierz źródło synchronizacji (trigger source) z kanału 2. Odsłuchaj sygnał, zanotuj wrażenia. Dokonaj ekspansji z powrotem do oryginalnej liczby próbek, z wypełnieniem sąsiednimi próbkami. Obejrzyj sygnał na oscyloskopie, odsłuchaj sygnał, zanotuj wrażenia. Zadanie extra Wyinterpoluj próbki poprzez splot z sinc (skorzystaj z kodów z zadania poprzedniego). Obejrzyj sygnał na oscyloskopie, odsłuchaj sygnał, zanotuj wrażenia. Zanotuj Zanotuj Zanotuj Zanotuj 1.3.3.4. Zadanie projektowe: minimalna częstotliwość próbkowania przy podpróbkowaniu 1) Wygeneruj analogowo sygnał pasmowy włączając przemiatanie (liniową modulację częstotliwości) w generatorze. Ustaw szerokość pasma B i częstotliwość środkową fc według tabeli 1.3. Wskazówka: “sweep ON” załącza modulację; “log/lnr” powinien być wciśnięty aby modulacja była liniowa; wciśnięcie “set” pozwala zmierzyć częstotliwość początkową (ustawianą pokrętłem “sweep start-adj”), a częstotliwość końcowa przemiatania jest równa częstotliwości ustalonej przy wyłączeniu “sweep”; “rate” warto ustawić na “fast”. Użyj funkcji analizy widma w oscyloskopie do kontroli ustawień. Zanotuj ustawione war- Zanotuj 26 Próbkowanie, odtwarzanie, decymacja, interpolacja 2016-03-16 20:55 Tabela 1.3 Nr stanowiska 1 2 3 4 5 6 7 8 9 10 11 12 13 fc [kHz] 2.6 3.2 4.3 2.5 5.2 8.0 4.5 4.9 5.4 4.3 3.6 5.3 13.0 B [Hz] 300 400 200 300 400 500 200 1000 300 400 700 400 1300 tości. 2) Zarejestruj kilka sekund sygnału przy częstotliwości próbkowania 48 kHz. Zarejestrowany sygnał zapamiętaj w dobrze nazwanej zmiennej (będzie potrzebna do późniejszych porównań). 3) Zaprojektuj schemat podpróbkowania, żeby uzyskać jak najmniej próbek na sekundę, ale wciąż odtworzyć sygnał inteligentną interpolacją do znanego pasma (przyjmij, że na etapie odtwarzania jest znana częstotliwość środkowa i stopień decymacji). Szukaj częstotliwosci próbkowania wśród częstotliwości, które można uzyskać przez redukcję próbek z częstotliwości 48 kHz. 4) Zrealizuj takie podpróbkowanie (przez redukcję próbek z nagranego sygnału) a nastepnie zrekonstruuj sygnał z powrotem do fs = 48 kHz. 5) Porównaj wynik z oryginałem na oscyloskopie (w dziedzinie widma i w dziedzinie czasu) R oraz w głośniku. i w MATLABie⃝ Zadanie można zrealizować również przy pomocy LabView – wtedy mamy możliwość dowolnego wyboru częstotliwości próbkowania i nie musimy “udawać” tego przy pomocy redukcji próbek. Realizacja przy pomocy LabView niestety wymaga obsłużenia przetworników. Najłatwiej to będzie zrobic z pomocą “express VI”. W protokole opisz sposób wyboru częstotliwości i ich wartości liczbowe oraz podsumuj wyniki porównania.