|
|
(Nie pokazano 17 pośrednich wersji utworzonych przez tego samego użytkownika) |
Linia 1: |
Linia 1: |
| + | Sygnały zapisujemy, przetwarzamy i analizujemy w postaci ciągów liczb. Przejście od sygnału ciągłego do cyfrowego odbywa się przez proces próbkowania, czyli zapisywania kolejnych amplitud sygnału w ustalonych, stałych odstępach czasu, [[TI/Cyfrowy_świat|omawiany wcześniej na TIiK]]. |
| | | |
| + | [[Plik:AD.png|150px|bezramki]] |
| | | |
| + | Ciągły sygnał z górnego rysunku, po próbkowaniu w punktach symbolizowanych czarnymi kropkami na rysunku dolnym, na dysku zostaje zapisany jako ciąg liczb: |
| | | |
− | [[Plik:wstep_rys_3.jpg|thumb|center|600px|alt=próbkowanie zmienia ciągłys sygnał| <figure id="fig:8"></figure> Próbkowane z częstością 1 oscylacje o częstościach ''f'', od góry: 1,3, 1, 0,5 i 0,3.
| + | 102, 195, 80, 16, 147, 178 |
− | Sinusa o częstości 0,3 można odtworzyć dokładnie z samych wartości dyskretnych (kropki),
| |
− | podobnie dla granicznej częstości 0,5. Natomiast próbkowane z tą samą częstością szybsze
| |
− | oscylacje wprowadzają przekłamania — widoczna na samej górze oscylacja o częstości 1,3
| |
− | daje w chwilach próbkowania wartości ''dokładnie takie same'' jak sygnał na dole.
| |
− | Zjawisko to nosi nazwę ''aliasingu'' ([[STAT:Klasyczna#Przekszta.C5.82cenie_Fouriera_sygna.C5.82.C3.B3w_dyskretnych.2C_aliasing | porównaj)]].]]
| |
| | | |
| + | Żeby odtworzyć fizyczne własności sygnału, czyli narysować zapisane wartości próbek (czarne kropki) w odpowiedniej skali, musimy znać ''częstość próbkowania'' i ''stałą kalibracji''. |
| | | |
| + | Wyrażana w hercach (Hz) częstość próbkowania (ang. ''sampling frequency'', <math>f_s</math>) to liczba próbek na sekundę. Jest ona odwrotnością odstępu w czasie między kolejnymi próbkami (<math>\Delta t</math>): |
| + | <div align = "center> |
| + | <math>f_s = \dfrac{1}{\Delta t}</math> |
| + | </div> |
| | | |
| + | Stała kalibracji to współczynnik, przez który mnożymy zapisane liczby, żeby otrzymać wartości w jednostkach fizycznych, na przykład mikrowoltach. |
| | | |
− | ===Zapis cyfrowy i korekcja błędów===
| + | Oczywiście musimy też wiedzieć, w jakim formacie zapisano na dysku liczby (omawiany rok temu na wykładzie o [[TI/Zera_i_jedynki|binarnych reprezentacjach liczb]]), oraz, w przypadku sygnałów wielozmiennych o jednolitym próbkowaniu, znać liczbę kanałów. Taka dodatkowa informacja (metainformacja) jest konieczna do poprawnego wyświetlenia danych z pliku. |
− | Aby zrozumieć, dlaczego łatwość korekcji błędów związana jest z
| |
− | zapisem cyfrowym, przyjrzyjmy się bliżej analogowym i cyfrowym zapisom
| |
− | dźwięku. Na płycie analogowej dźwięk kodowany jest w zmiennym
| |
− | wyżłobieniu rowka, w którym przemieszcza się igła gramofonu. W
| |
− | przybliżeniu możemy wyobrazić sobie, że "podskok" igły w większym
| |
− | wgłębieniu rowka odwzorowywany jest jako większe wychylenie membrany
| |
− | głośnika (po zamianie w impuls elektryczny i przejściu przez
| |
− | wzmacniacz). Tak więc wyżłobienie rowka płyty oryginalnie odwzorowuje
| |
− | dokładnie zapisany dźwięk. Jego zarysowanie lub zabrudzenie wprowadzi
| |
− | przy odtwarzaniu zakłócenia (zwykle trzaski). Jednoznaczne
| |
− | rozróżnienie, które z wyżłobień rowka winylowej płyty odzwierciedlają
| |
− | oryginalny zapis muzyki, a które powstały skutkiem uszkodzeń, jest
| |
− | właściwie niemożliwe, dlatego też muzyka ze starych płyt kojarzy nam
| |
− | się z obecnością trzasków i szumu.<ref>Tak naprawdę sprawa nie
| |
− | jest beznadziejna:
| |
− | * część zakłócen pochodzi z zanieczyszczeń; w tym przypadku zwykle pomaga delikatne czyszczenie płyty.
| |
− | * Do pozostałych zakłóceń, których nie da się usunąć mechanicznie, stosuje się potężną metodologię analizy sygnałów (będącą przedmiotem następnych rozdziałów), która pomaga zgadnąć, które dźwięki w zapisie mogą pochodzić z zakłóceń. Zwykle jednak nie da się usunąć dokładnie wszystkich zakłóceń bez naruszenia brzmienia oryginału.</ref>
| |
| | | |
− | W przypadku zapisu cyfrowego możemy w prosty sposób ''wykryć'' fakt wystąpienie zakłóceń. Wyobraźmy sobie, że zapisujemy muzykę jako szereg liczb, opisujących amplitudę fali dźwiękowej mierzoną w ustalonych odstępach czasu (rys. <xr id="fig:9"></xr>; dla płyty kompaktowej <math>\Delta t = 1/44 100</math> sekundy). Ponieważ urządzenie, które będzie zamieniać ten zapis z powrotem na muzykę, i tak musi być swego rodzaju specjalizowanym komputerem (odtwarzaczem
| + | ===Aliasing=== |
− | CD), to do programu odtwarzającego możemy wprowadzić pewną modyfikację. Umówmy się dla przykładu, że z każdych dziesięciu kolejnych liczb, do zapisu muzyki będziemy wykorzystywać tylko
| + | Poza znajomością zależności między zapisanymi liczbami a jednostkami fizycznymi w procesie próbkowania kluczową rolę odgrywa twierdzenie o próbkowaniu (inaczej twierdzenie Nyquista-Shannona, czasem w skrócie twierdzenie Nyquista). Mówi ono, że sygnał ciągły możemy odtworzyć za zapisanych próbek, jeśli częstość próbkowania <math>f_p</math> była wyższa niż dwukrotność najwyższej z występujących w sygnale częstości <math>f_{max}</math>, nazywana częstością Nyquista <math>f_N</math>: |
− | dziewięć, a ostatnią będziemy dobierać tak, żeby suma kolejnych dziesięciu liczb zawsze wynosiła np. milion.
| + | <div align = "center> |
| + | <math> f_s = \dfrac{1}{\Delta t} > 2* f_{max} = f_N</math> |
| + | </div> |
| + | Jeśli częstość próbkowania nie była wystarczająco wysoka, nie tylko stracimy informację o zmianach amplitudy sygnału "pomiędzy próbkami", ale dojdzie też do zafałszowania sygnału w niższych częstościach, które z pozoru nie powinny być zaburzone. Efekt ten jest bliżej omówiony w rozdziale [[Aliasing]]. |
| | | |
− | [[Plik:wstep_rys_4.jpg|thumb|center|600px|alt=digitalizacja sygnału analogowego|<figure id="fig:9"></figure> Od góry: ciągły (analogowy) zapis fali dźwiękowej, poniżej próbkowanie, czyli wybór chwil, w których ją mierzymy, dalej zamiana zmierzonych wartości na liczby i liczb na bity. Pasek na dole może być np. fragmentem ścieżki na płycie CD: białe pola (zera) odbijają światło lasera, a czarne (jedynki) nie.]] | + | [[Plik:Nyquist1.png|600px|bezramki]] |
| | | |
− | Taki sposób zapisu wprowadza redundancję, czyli
| + | ===Sygnał dyskretny jako wektor=== |
− | nadmiar informacji w zapisie, ponieważ przy prawidłowym odczycie
| |
− | wystarczyłoby znać dziewięć kolejnych liczb, aby wyznaczyć dziesiątą
| |
− | (jako milion minus suma pozostałych dziewięciu). Jednak jeśli
| |
− | wczytamy z takiego zapisu wszystkie liczby, i suma którejś dziesiątki
| |
− | okaże się inna niz milion, to mamy pewność, że w tym miejscu wystąpił
| |
− | błąd.<ref>Ale poprawna suma nie daje gwarancji, że błędu nie ma.
| |
− | W jednej dziesiątce mogą wystąpić np. dwa jednakowe błędy o
| |
− | przeciwnych znakach i suma pozostanie niezmieniona. Dlatego sumy
| |
− | kontrolne liczy się w bardziej wyrafinowany sposób (np. CRC --
| |
− | ''Cyclic Redundancy Check'' ) </ref> Taka informacja jest bardzo cenna:
| |
− | * Jeśli ''jesteśmy pewni'' , że nagły skok amplitudy w kilku kolejnych próbkach jest wynikiem błędu zapisu, a nie efektem zamierzonym przez muzyka, to możemy ten skok "przemilczeć", czyli np. zastąpić "popsute" próbki średnią wartością poprzednich.
| |
− | * Możemy zwiększyć redundancję i zapisać dwie jednakowe kopie; jeśli uszkodzeniu ulegnie fragment pierwszej kopii, program może automatycznie sięgnąć do odpowiedniego fragmentu drugiej kopii<ref>Prawdopodobieństwo wystąpienia uszkodzeń w tych samych fragmentach dwóch zapisów jest już bez porównania mniejsze niż pojedynczego uszkodzenia. Sposobem wprowadzania nadmiarowości, który minimalizuje prawdopodobieństwo wystąpienia takich pechowych przypadków, rządzi dość złożona matematyka z pogranicza statystyki, której nie będziemy tu omawiać. W każdym razie, dwie jednakowe kopie umieszczone jedna za drugą zwykle nie okazują się rozwiązaniem otymalnym.</ref>.
| |
− | * W przypadku transmisji przez modem, program może zażądać powtórnego przesłania uszkodzonego fragmentu.
| |
| | | |
− | Niezależnie od tych korzyści, jeśli chcemy analizować sygnały z pomocą
| + | [https://en.wikipedia.org/wiki/Energy_(signal_processing) Energia sygnału] |
− | komputera ''(maszyny cyfrowej)'', i tak jesteśmy "skazani" na
| |
− | pracę z ich dyskretną formą.
| |
| | | |
− | Mimo tego, większość ogólnych twierdzeń będziemy rozważać w
| |
− | przestrzeni funkcji ciągłych — o ile nie tyczą się ''explicite''
| |
− | efektów próbkowania. Teoria funkcji ciągłych jest asymptotycznie
| |
− | zgodna z wynikami dla sekwencji dyskretnych — dla odstępu próbkowania
| |
− | dążącego do zera. Jej rezultaty, prostsze pojęciowo i łatwiejsze do
| |
− | wyprowadzenia, są wystarczająco dokładne by wyjaśnić ogólne własności
| |
− | dyskretnych obliczeń.
| |
| | | |
− | W uzasadnionych przypadkach będziemy oczywiście dyskutować efekty
| + | [[Plik:Product1.png|bezramki]] |
− | próbkowania; w takich sytuacjach będziemy rozróżniać sygnał ciągły
| |
− | <math>s(t)</math> od dyskretnej sekwencji <math>s[n]</math>.
| |
| | | |
− | [[TI:Technologia_Informacyjna/Cyfrowy_świat| Podobne tematy opisuje rozdział "Cyfrowy Świat"]] z podręcznika Technologii Informacyjnej. | + | [[Plik:Product2.png|bezramki]] |
| + | |
| + | [[Plik:Product3.png|bezramki]] |
| + | |
| + | [[Plik:Product4.png|bezramki]] |
| + | |
| + | [[Plik:Product5.png|bezramki]] |
| + | |
| + | [[Plik:Product6.png|bezramki]] |
| + | |
| + | ===Liczby zespolone=== |
| + | |
| + | ===[[Szereg Fouriera]]=== |
| + | |
| + | |
| + | |
| + | ===[[Przekształcenie Fouriera]]=== |
| + | |
| + | |
| + | |
| + | |
| + | <div align="right"> |
| + | [[Analiza_sygnałów_-_wykład|⬆]] [[...|⮕]] |
| + | </div> |
| + | __NOTOC__ |
Sygnały zapisujemy, przetwarzamy i analizujemy w postaci ciągów liczb. Przejście od sygnału ciągłego do cyfrowego odbywa się przez proces próbkowania, czyli zapisywania kolejnych amplitud sygnału w ustalonych, stałych odstępach czasu, omawiany wcześniej na TIiK.
Ciągły sygnał z górnego rysunku, po próbkowaniu w punktach symbolizowanych czarnymi kropkami na rysunku dolnym, na dysku zostaje zapisany jako ciąg liczb:
102, 195, 80, 16, 147, 178
Żeby odtworzyć fizyczne własności sygnału, czyli narysować zapisane wartości próbek (czarne kropki) w odpowiedniej skali, musimy znać częstość próbkowania i stałą kalibracji.
Wyrażana w hercach (Hz) częstość próbkowania (ang. sampling frequency, [math]f_s[/math]) to liczba próbek na sekundę. Jest ona odwrotnością odstępu w czasie między kolejnymi próbkami ([math]\Delta t[/math]):
[math]f_s = \dfrac{1}{\Delta t}[/math]
Stała kalibracji to współczynnik, przez który mnożymy zapisane liczby, żeby otrzymać wartości w jednostkach fizycznych, na przykład mikrowoltach.
Oczywiście musimy też wiedzieć, w jakim formacie zapisano na dysku liczby (omawiany rok temu na wykładzie o binarnych reprezentacjach liczb), oraz, w przypadku sygnałów wielozmiennych o jednolitym próbkowaniu, znać liczbę kanałów. Taka dodatkowa informacja (metainformacja) jest konieczna do poprawnego wyświetlenia danych z pliku.
Aliasing
Poza znajomością zależności między zapisanymi liczbami a jednostkami fizycznymi w procesie próbkowania kluczową rolę odgrywa twierdzenie o próbkowaniu (inaczej twierdzenie Nyquista-Shannona, czasem w skrócie twierdzenie Nyquista). Mówi ono, że sygnał ciągły możemy odtworzyć za zapisanych próbek, jeśli częstość próbkowania [math]f_p[/math] była wyższa niż dwukrotność najwyższej z występujących w sygnale częstości [math]f_{max}[/math], nazywana częstością Nyquista [math]f_N[/math]:
[math] f_s = \dfrac{1}{\Delta t} \gt 2* f_{max} = f_N[/math]
Jeśli częstość próbkowania nie była wystarczająco wysoka, nie tylko stracimy informację o zmianach amplitudy sygnału "pomiędzy próbkami", ale dojdzie też do zafałszowania sygnału w niższych częstościach, które z pozoru nie powinny być zaburzone. Efekt ten jest bliżej omówiony w rozdziale Aliasing.
Sygnał dyskretny jako wektor
Energia sygnału
Liczby zespolone