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.