Wstep: Różnice pomiędzy wersjami

Z Brain-wiki
 
(Nie pokazano 95 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
==[[Analiza_sygnałów_-_lecture|AS/]]Sygnał==
+
==[[Analiza_sygnałów_-_wykład|]] Próbkowanie sygnałów analogowych==
W języku potocznym sygnał to [http://sjp.pwn.pl/lista.php?co=sygnał|''wszelki umowny znak o treści informacyjnej''].  Z kolei w ramach tego wykładu przez
+
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]].  
''sygnał'' rozumieć będziemy funkcję (zależną zwykle od
 
czasu<ref>Uzyskane rezultaty nie zależą od fizycznej postaci
 
zmiennej zależnej (<math>t</math>) i większość z nich stosowana jest np. w
 
analizie obrazów. </ref>) <math>s(t)</math>. Czy mówimy o tym samym?
 
  
Rozważmy przykładowe znaki umowne: czerwone światło na
+
[[Plik:AD.png|220px|bezramki]]
skrzyżowaniu to docierająca do naszych oczu fala
+
<!--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:-->
elektromagnetyczna o długości ok. 0,0000007 metra;
+
  102, 195, 80, 16, 147, 178
znaczeniem tego sygnału jest "stój". Litery, które czytasz, to
 
pewien rozkład zaczernienia kartki, dający się niewątpliwie opisać
 
z pomocą funkcji matematycznych, gdyż w tej właśnie formie
 
przechodził kolejne etapy poprzedzające druk. Ich znaczenie...
 
  
Wydaje się, że fizyczną postać informacji &mdash; umożliwiającą jej przekaz
+
Żeby odtworzyć fizyczne własności sygnału, czyli narysować zapisane wartości próbek w odpowiedniej skali, musimy znać ''częstość próbkowania'' i ''stałą kalibracji''.
czy przechowywanie &mdash; można nazwać sygnałem. A odwrotnie? Czy każdy
 
sygnał niesie ze sobą jakąś informację?  Owszem, tylko niekiedy może
 
ona być nieskończenie trudna do odczytania (dokładam wszelkich starań,
 
aby nie miało to miejsca w przypadku tego tekstu :-). A sygnały zupełnie
 
przypadkowe? Okazuje się, że nie są wcale powszechne ani łatwe do
 
wytworzenia <ref>Za sygnał przypadkowy możemy uznać sekwencję
 
liczb, przyjmującym wartości z określonego przedziału, np. od 0 do 1,
 
z jednakowym prawdopodobieństwem. Ponadto w takiej sekwencji nie
 
powinny występować ''żadne'' zależności między prawdopodobieństwem
 
"wylosowania" następnej liczby a wartościami poprzednich, gdyż w
 
nich właśnie może być zakodowana informacja. W przyrodzie znamiona
 
takiej przypadkowości noszą zjawiska związane z rozpadem
 
promieniotwórczym.</ref>, więc właśnie całkowitą przypadkowość można uznać
 
za niesioną przez sygnał informację.
 
  
==Analiza==
+
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>):
Informację niesioną przez milion liczb, wylosowanych niezależnie
+
<div align = "center>
spomiędzy 0 i 1, można przedstawić krócej niż przez wyliczenie ich
+
<math>f_s = \dfrac{1}{\Delta t}</math>
wszystkich &mdash; choćby tym właśnie zdaniem. Opis ten jest nie tylko
+
</div>
bardziej zwięzły niż przytaczanie miliona wartości, ale oddaje
 
jednocześnie najważniejsze ich cechy &mdash; ''istotę''  
 
sygnału. Zwięzłych, trafny i kompletny opis sygnałów występujących w
 
przyrodzie to właśnie Święty Graal analizy sygnałów.  Ta książka to
 
zaledwie zbiór wskazówek, które przy rozsądnym stosowaniu mogą nas
 
czasem doprowadzić w jego pobliże.
 
  
Zastanówmy się więc, na czym właściwie ma polegać analiza czy opis
+
Stała kalibracji to współczynnik, przez który mnożymy zapisane liczby, żeby otrzymać wartości w jednostkach fizycznych, na przykład mikrowoltach.
sygnału, w przypadku bardziej skomplikowanym niż przytoczony powyżej?
 
Sięgniemy raz jeszcze do [http://sjp.pwn.pl/|''Słownika języka polskiego'']:
 
  
'''analiza''' 1. myślowe, pojęciowe wyodrębnienie cech,
+
Oczywiście musimy też wiedzieć, w jakim formacie zapisano na dysku liczby (formaty omawialiśmy 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, w którym zapisano dane wielokanałowe, jak np. kilka odprowadzeń EEG lub dane kilku spółek giełdowych, próbkowane i zapisywane w jednakowych odstępach czasu.  
części, lub składników badanego zjawiska lub przedmiotu; badanie cech
 
elementów lub struktury czegoś oraz zachodzących między nimi związków
 
(...)
 
  
Skoncentrujmy się najpierw na "wyodrębnianiu części lub składników".
+
[[Plik:WakeEEG Svarog 3chans.png|1200px|bezramki]]
Ilustrację tego podejścia stanowi rysunek <xr id="fig:1"> %i</xr>.
+
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 +
| <strong>Informacje o częstości próbkowania, stałej kalibracji, liczbie i nazwach kanałów itp. to metainformacja, klucz do poprawnego odczytu i intepretacji zapisanych liczb.</strong>
 +
|-
 +
|Zawartość pliku "wakeEEG.xml", zawierającego metainformację określającą sposób wyświetlania i opisu liczb zawartych w pliku "wakeEEG.bin" według formatu opracowanego na WF UW w programie Svarog:
 +
<pre>
 +
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 +
<rs:rawSignal xmlns:rs="http://signalml.org/rawsignal">
 +
  <rs:exportFileName>moto128.bin</rs:exportFileName>
 +
  <rs:sourceFileName>durka_moto3.bin</rs:sourceFileName>
 +
  <rs:sourceFileFormat>
 +
    <rs:rawSignalInfo/>
 +
  </rs:sourceFileFormat>
 +
  <rs:samplingFrequency>128.0</rs:samplingFrequency>
 +
  <rs:channelCount>20</rs:channelCount>
 +
  <rs:sampleCount>20480</rs:sampleCount>
 +
  <rs:sampleType>FLOAT</rs:sampleType>
 +
  <rs:byteOrder>LITTLE_ENDIAN</rs:byteOrder>
 +
  <rs:pageSize>20.0</rs:pageSize>
 +
  <rs:blocksPerPage>1</rs:blocksPerPage>
 +
  <rs:eegSystemName>
 +
    <rs:eegSystemSymbol>EEG 10_20 Cap19</rs:eegSystemSymbol>
 +
    <rs:eegSystemType>adults</rs:eegSystemType>
 +
  </rs:eegSystemName>
 +
  <rs:channelLabels>
 +
    <rs:label>Fp1</rs:label>
 +
    <rs:label>Fp2</rs:label>
 +
    <rs:label>F7</rs:label>
 +
    <rs:label>F3</rs:label>
 +
    <rs:label>Fz</rs:label>
 +
    <rs:label>F4</rs:label>
 +
    <rs:label>F8</rs:label>
 +
    <rs:label>T7</rs:label>
 +
    <rs:label>C3</rs:label>
 +
    <rs:label>Cz</rs:label>
 +
    <rs:label>C4</rs:label>
 +
    <rs:label>T8</rs:label>
 +
    <rs:label>P7</rs:label>
 +
    <rs:label>P3</rs:label>
 +
    <rs:label>Pz</rs:label>
 +
    <rs:label>P4</rs:label>
 +
    <rs:label>P8</rs:label>
 +
    <rs:label>O1</rs:label>
 +
    <rs:label>O2</rs:label>
 +
    <rs:label>FCz</rs:label>
 +
  </rs:channelLabels>
 +
  <rs:exportDate>2013-03-20T12:59:21</rs:exportDate>
 +
  <rs:calibrationGain>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
    <rs:calibrationParam>0.01</rs:calibrationParam>
 +
  </rs:calibrationGain>
 +
  <rs:calibrationOffset>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
    <rs:calibrationParam>0.1</rs:calibrationParam>
 +
  </rs:calibrationOffset>
 +
</rs:rawSignal>
 +
</pre>
 +
|}
  
[[Plik:wstep_rys_1.jpg|thumb|center|600px|alt=Sumowanie sygnałów|<figure id="fig:1"></figure> (a) = (b) + (c) + (d)<br/>(b)=<math>  0.3 \sin(2\pi 12 t)</math> (sinus)<br/>(c)=<math> 0.7 e^{{-(t-0.8)^2}/{0.2}} \sin(2\pi 20 t)</math> (funkcja Gabora)<br/> (d)=<math>0.5 \sin(2\pi\,2\, t\; t )</math> (chirp)]]
 
  
"Tajemnicę" konstrukcji sygnału z górnej części rysunku
 
<xr id="fig:1"> %i</xr> odkrywają wyrysowane pod nim funkcje składowe. Sygnał
 
(a) jest ich (liniową) sumą. Taki przypadek sygnału będącego liniową
 
kombinacją znanych funkcji możemy przedstawić ogólnie jako
 
  
<equation id="eq:suma_syg">
+
==Aliasing i częstość Nyquista==
<math>
+
[[Plik:Aliasing gif.gif|590px|bezramki]]
s(t) = \sum_{k} \alpha_k g_k
+
 
</math>
+
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_s</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>:
</equation>
+
<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:Nyquist1.png|600px|bezramki]]
 +
 
 +
==Sygnał dyskretny jako wektor==
 +
[[Plik:AD.png|mały|220px|<pre>102, 195,  80,  16, 147, 178</pre>]]
 +
Skoro sygnał to po prostu ciąg liczb, możemy go potraktować jak wektor. Na płaszczyźnie wektor to para współrzędnych (''x'', ''y''), w przestrzeni trójwymiarowej trójka liczby (x, y, z), które wyobrażamy sobie jako strzałkę wiodącą od punktu (0, 0, 0) do (x, y, z). Sygnał składający się z pięciu punktów będzie wektorem w przestrzeni pięciowymiarowej, więc intuicja "strzałki" dla większości z nas przestaje być użyteczna. Pomimo tego, możemy wciąż korzystać z użytecznych pojęć z dziedziny algebry wektorów, jak ortogonalność czy iloczyn skalarny.
 +
 
 +
 
 +
===Iloczyn skalarny===
 +
Iloczyn skalarny przyjmiemy jako miarę podobieństwa dwóch sygnałów. Obliczać go będziemy tak samo jak dla wektorów — przypomnijmy: niech <math>\mathbf{x} = [x_1, x_2, x_3]</math>, i <math>\mathbf{y} = [y_1, y_2, y_3]</math>; iloczyn skalarny tych wektorów oznaczamy <math display="block">\mathbf x \cdot \mathbf y</math> (''zarówno wytłuszczenie symboli wektorów, jak i symbol mnożenia/ilocznu skalarnego "<math>\cdot</math>", będziemy dalej pomijać''):
 +
 
 +
<div align = "center">
 +
<math display="block">\displaystyle \mathbf a \cdot \mathbf b = \sum_{i=1}^3 x_i y_i = x_1 y_1 + x_2 y_2 + x_3 y_3</math>
 +
</div>
 +
 
 +
A jak to będzie wyglądać dla sygnałów złożonych z więcej niż trzech punktów? Weźmy
 +
 
 +
<math>x=[-2, -2, 2, -1, -2]</math>
 +
 
 +
<math>y=[-1, -1, 1,  1, 0]</math>
 +
 
 +
Zamiast strzałek w pięciowymiarowej przestrzeni, łatwiej wizualizować na wykresach wartości kolejnych próbek:
 +
 
 +
[[Plik:Product2.png|bezramki]]
 +
 
 +
<math>x\cdot y = [-2, -2, 2, -1, -2] \cdot [-1, -1, 1,  1, 0] = 2+2+2-1+0 = 5</math>
 +
 
 +
 
 +
 
 +
===Ortogonalność===
 +
Kolejnym użytecznym pojęciem, które możemy zaczerpnąć bezpośrednio z algebry wektorów, jest ortogonalność. Dwa wektory (sygnały) są do siebie ortogonalne, jeśli ich iloczyn skalarny wynosi zero, jak poniżej:
 +
 
 +
[[Plik:Product6.png|500px|bezramki]]
 +
 
 +
W przypadku sygnału złożonego z 16 punktów, możemy ten fakt sprawdzić obliczając iloczyn skalarny punkt po punkcie, albo też zauważając prawidłowości występujące w każdym okresie górnego sygnału. W przypadku dłuższych i bardziej złożonych sygnałów może to już nie być takie oczywiste, jak np. ortogonalność wszystkich sinusów na poniższym rysunku, których częstości są całkowitymi wielokrotnościami częstości podstawowej:
 +
 
 +
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 +
| <strong>Zbiór ortogonalnych sinusów</strong>
 +
|-
 +
|<math>f(x)=\sin(kx), k=1,2,\ldots</math>
 +
[[Plik:Ort sines cont.png|700px|bezramki]]
 +
|}
 +
 
 +
 
 +
 
 +
===Energia sygnału===
 +
Matematycznie energia sygnału <math>x</math> to <math>\langle x,x \rangle</math> (czyli <math>x\cdot x</math>, iloczyn skalarny sygnału "z samym sobą"). Dla sygnałów ciągłych <math>\langle x(t), x(t) \rangle = \int |x(t)|^2 dt</math>, dla sygnałów dyskretnych <math> \langle x[n], x[n] \rangle = \sum_n |x[n]|^2</math>.
 +
Fizycznie musimy wziąć pod uwagę wspomniane wcześniej stałą kalibracji i częstość próbkowania:
 +
 
 +
*Jeśli sygnałem będzie prąd elektryczny o natężeniu <math>i(t)</math> mierzonym w amperach, płynący w obwodzie o oporności <math>R</math> omów, to wytracana przez niego energia wyniesie <math>E_i = R \int |i(t)|^2 dt</math> dżuli.
 +
 
 +
*W przypadku sygnału dyskretnego <math>x[t]</math>, całkę <math>\int x(t) dt </math> zastępujemy sumą pól kolejnych prostokątów o wysokości <math>x[n]</math> i szerokości równej odstępowi między kolejnymi punktami <math>\Delta t = \frac{1}{f_s}</math>
 +
:<math>E_{x[n]} = \Delta t \sum_n |x(n)|^2 = \frac{1}{f_s} \sum_n  |x(n)|^2 </math>
 +
 
 +
 
 +
[[Plik:Product3.png|bezramki]]
 +
 
 +
<!--
 +
<math>x\cdot x = [-2, -2, 2, -1, -2] \cdot [-2, -2, 2, -1, -2] = 4+4+4+1+4=17</math>
 +
-->
 +
 
 +
==Liczby zespolone==
 +
Przypomnijmy w skrócie: <math>i^2=-1</math>. Liczbę zespoloną <math>z</math> możemy zapisać w postaci algebraicznej jako
 +
: <math>z=a+bi,</math>
 +
gdzie <math>a</math> to część rzeczywista, <math>b</math> — część urojona.
 +
 
 +
Sprzężenie zespolone liczby <math>z</math> oznaczamy <math>\overline{z}</math>:
 +
: <math>\overline{z} = a - bi</math>
 +
a jej moduł to <math>|z| = \sqrt{a^2 + b^2}</math> (inaczej <math>|z| = z \cdot \overline{z}</math>).
 +
 
 +
Postać trygonometryczna:
 +
: <math>z = a + bi = |z| \cdot \dfrac{a}{|z|} + |z| \cdot \dfrac{b}{|z|}i = |z| \cdot (\cos \phi + i\sin \phi).</math>
 +
 
 +
Wykorzystując wzór Eulera<ref>wzorem Eulera bywa również nazywane równanie <math>e^{i\pi}+1=0</math></ref>
 +
:<math>e^{i\phi} = \cos(\phi) + i\sin(\phi)</math>
 +
możemy liczbę zespoloną zapisać jako
 +
:<math>z = |z|e^{i\phi}</math>
  
gdzie <math>\{g_i\}</math> to zbiór "znanych" funkcji, a <math>\alpha_i</math> to
 
współczynniki określające ich wkłady. W konkretnym przypadku sygnału z
 
rysunku <xr id="fig:1"> %i</xr> wyglądałyby one następująco:
 
<equation id="eq:zlozenie_sygnalow">
 
<math>
 
\left \{
 
\begin{matrix}
 
\alpha_1 = 0.3, & g_1 = \sin(2 \pi 12 t)\\
 
\alpha_2 = 0.7,  &g_2 = e^{{-(t-0.8)^2}/{0.2}} \sin(2\pi 20 t)\\
 
\alpha_3 = 0.5, &g_3 =  \sin(2\pi\,2\, t\; t )
 
\end{matrix}
 
\right .
 
</math>
 
</equation>
 
  
Załóżmy, że interesująca nas w sygnale informacja została faktycznie
 
zakodowana według równania <xr id="eq:suma_syg">(%i)</xr>. Niestety, dokładne
 
"odgadnięcie" reprezentacji typu równania <xr id="eq:zlozenie_sygnalow">(%i)</xr> jest
 
w ogólnym przypadku &mdash; czyli w braku pewnej wiedzy a priori o sygnale
 
&mdash; niemożliwe. Już sam wybór ''rodzaju''  funkcji (np. sinusy i
 
kosinusy) jest nieskończenie trudny &mdash; wszak różnych funkcji jest
 
nieskończenie wiele! Nawet gdy już zdecydujemy, jakiego rodzaju
 
funkcje powinny najlepiej opisywać analizowany sygnał, to dobranie ich
 
parametrów wciąż pozostaje poważnym problemem (patrz np. rozdział [[Reprezentacje_przybliżone#Przybliżenia_adaptacyjne(adaptive_approximations)|o algorytmie Matching Pursuit]]).
 
  
 +
==[[Szereg Fouriera]]==
 +
Sygnał ''okresowy'' (o okresie <math>T</math>) można przedstawić w
 +
postaci szeregu Fouriera:
  
Ale analiza to również "badanie cech elementów lub struktury (...)
+
<equation id="eq:15">
oraz zachodzących między nimi związków".  Możemy pokusić się o
+
<math>
ustalenie związku między wartością sygnału w danej chwili i w chwilach
+
s(t) =\sum_{n=-\infty}^{+\infty} c_n e^{-i\frac{2\pi n}{T} t},
poprzednich, w postaci zależności liniowej -- takie założenie realizuje [[Klasyczna#Model_AR|opisany w jednym z następnych rozdziałów model AR]]:
+
</math>
 +
</equation>
  
<equation id="eq:zal_lin">
+
gdzie
 +
<equation id="eq:16">
 
<math>
 
<math>
s(t) = \alpha_1 s(t - \Delta t) + \alpha_2 s(t -2\Delta t) + \alpha_3 s(t - 3 \Delta t) + ...
+
c_{n} = \frac{1}{T}\int_{0}^{T} s(t) e^{i \frac{2\pi n}{T} t} d t  
 
</math>
 
</math>
</equation>
+
</equation>  
  
Jeśli weźmiemy pod uwagę czynniki przypadkowe, jak np. niedokładność
+
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
pomiarów, do równań <xr id="eq:suma_syg">(%i)</xr> i <xr
+
| <strong>'''Dowód'''  powyższego wzoru:  </strong>
id="eq:zal_lin">(%i)</xr> należy dodać element stochastyczny &mdash; nie
+
|-
podlegający opisowi w ramach modelu szum <math>\epsilon</math>
+
| Mnożymy obie strony <xr id="eq:15">równania</xr> przez <math>e^\frac{2\pi i k t}{T}</math>  
([[Reprezentacje przybliżone|patrz rozdział o reprezentacjach przybliżonych]]):
+
i całkujemy po <math>dt</math> od <math>0</math> do <math>T</math>:  
  
<equation id="eq:suma_z_szumem">
+
<math>  
<math>\begin{matrix}
+
\int_0^T s(t) e^{{{2\pi i k t}\over{T}}} dt =  
s(t) = \sum_{k=0}^{M} \alpha_k g_k + \epsilon_M \\
+
\sum_{n=-\infty}^{+\infty} \int_0^T c_n e^{i{{2 \pi (k-n)}\over{T}} t}dt
s(t) = \sum_{k=0}^{M} \alpha_k s (t - k \Delta t) + \epsilon_t
+
</math>
\end{matrix}</math>
+
</equation>
+
Całki po prawej stronie znikają dla <math>k \ne n</math>. Jedyny niezerowy
 +
wyraz dla <math>k = n</math> wynosi <math>\int_0^T c_n dt</math>, czyli <math>c_n T</math> (bo <math>e^0=1</math>).
 +
|}
 +
Każdą funkcję okresową możemy przedstawić w postaci sumy sinusów i kosinusów z odpowiednimi wagami — przypomnijmy: <math>e^{i \phi} = \cos(\phi) + i \sin(\phi)</math>.
  
Na koniec zauważmy, że zaproponowane dotychczas modele mają postać
+
Wagi <math>c_n</math> możemy traktować jako względny udział odpowiadających im częstości.
liniowych sum.  Uwzględnienie nieliniowości otwiera nowe, nie
 
uwzględnione w tej książce rozdziały, jak np. chaos deterministyczny,
 
fraktale...
 
  
==Sygnały ciągłe i dyskretne==
 
  
Wartości akcji w chwilach zamknięcia kolejnych sesji giełdy tworzą
+
===Przykład: szereg Fouriera dla prostokąta===
sygnał z natury dyskretny.  Jednak w przyrodzie większość stanowią
+
Policzmy postać współczynników Fouriera dla funkcji <math>\Theta(t)</math>,
sygnały ciągłe, jak dźwięk (zmiany ciśnienia powietrza w czasie) czy
+
określonej na przedziale <math>[0,1]</math> w następujący sposób:
elektroencefalogram ([[EEG|EEG, potencjał elektryczny mózgu mierzony z
 
powierzchni czaszki]]). Niezależnie od tego, współczesna analiza
 
sygnałów odnosi się w praktyce głównie do sygnałów
 
dyskretnych. "Winne" są oczywiście komputery, urządzenia z natury
 
cyfrowe, czyli "rozumiejące" wyłącznie dyskretne wartości. Zastanówmy
 
się nad wynikającymi stąd korzyściami i stratami.
 
  
Jeśli sygnał z natury ciągły (np. dźwięk) zdecydujemy się analizować
+
:<equation id="eq:18">
lub przechowywać w formie cyfrowej, to ciągłą funkcję (np. ciśnienia
+
<math>
powietrza) w czasie musimy zastąpić jej wartościami zmierzonymi w
+
\Theta(t) = \left\{
określonych (najlepiej jednakowych) odstępach czasu, jak na
+
\begin{matrix}
rys. <xr id="fig:7"> %i</xr>.
+
1 &, & t \in [0, \frac{1}{2})\\
 +
0 &, & t \in [ \frac{1}{2}, 1]
 +
\end{matrix}
 +
\right.
 +
</math>
 +
</equation>
 +
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 +
| <strong>obliczenia:  </strong>
 +
|-
 +
|Bezpośrednio z <xr id="eq:16">wzoru</xr> dostajemy (dla <math>T = 1</math>)
 +
 +
<math>\begin{matrix}
 +
c_{n} = \frac{1}{T}\int_{0}^{T} \Theta(t) e^\frac{i 2\pi n t}{T} d t
 +
= \int_{0}^\frac{1}{2} e^{{{i 2\pi n t}}} d t = ( \mathrm{dla}\; n \ne 0 ) =
 +
\left [\frac{1}{i 2\pi n} e^{{i 2\pi n t}} \right ]_{t=0}^{t=\frac{1}{2}} \\
 +
= \frac{1}{i 2\pi n} ( e^{i \pi n} - 1 ) =
 +
\left\{
 +
\begin{matrix}
 +
0 & \mathrm{dla}\; n = \pm2, \pm4, \ldots\\
 +
i/\pi n & \mathrm{dla}\; n = \pm1, \pm3, \ldots
 +
\end{matrix}
 +
\right .\\
 +
(\mathrm{dla}\; n=0) \;\; c_0 = \int_{0}^\frac{1}{2} 1 d t = \frac{1}{2}
 +
\end{matrix}</math>
 +
<br/>
 +
<br/>
  
[[Plik:wstep_rys_2.jpg|thumb|center|600px|alt=próbkowanie zmienia ciągłys sygnał| <figure id="fig:7"></figure> Próbkowanie zamienia ciągły sygnał
+
Tak więc z <xr id="eq:15">wzoru</xr>
(a) na punkty (b) o współrzędnych w chwilach
 
próbkowania i odpowiadających im wartościach sygnału ciągłego. Jeśli dysponujemy tylko
 
sygnałem próbkowanym (b), to możemy "uzupełnić" wartości spomiędzy próbek
 
przyjmując, że sygnał pomiędzy nimi jest np. liniowy (c) lub
 
stały od poprzedniego punktu (d) &mdash; widzimy rozbieżności z sygnałem oryginalnym (a).
 
Faktyczną reprezentacją funkcji po próbkowaniu jest ciąg liczb (e) plus znajomość odstępu próbkowania <math>\Delta t</math>. Optymalny sposób odzyskania wartości spomiędzy
 
próbek, jeśli próbkowanie przeprowadzono zgodnie z regułami sztuki, podaje [[STAT:Klasyczna#Twierdzenie_o_pr.C3.B3bkowaniu| rozdział o próbkowaniu]]]]
 
  
Przy przejściu z reprezentacji ciągłej (rys. <xr id="fig:7"> %i</xr> a) do dyskretnej (b) tracimy informację o
+
<math>\begin{matrix}
wartościach sygnału pomiędzy próbkami, a naiwne próby ich rekonstrukcji (c i d)
+
\Theta(t) = \sum_{-\infty}^{\infty}  c_n e^{-i 2 \pi t n} =
znacznie odbiegają od oryginału (a).
+
\frac{1}{2}\; + \sum_{n=\pm1, \pm3, \ldots} \frac{i}{\pi n} e^{-i 2 \pi t n}= \\
 +
= \frac{1}{2}\; + \sum_{n=\pm1, \pm3, \ldots} \frac{i}{\pi n} \left( \cos(2\pi n t) - i \sin( 2\pi n t) \right)=\\
 +
= \frac{1}{2}\; + \sum_{n=\pm1, \pm3, \ldots} \frac{i}{\pi n} \cos(2\pi n t)\;\; + \sum_{n=\pm1, \pm3, \ldots} \frac{1}{\pi n} \sin( 2\pi n t)  
 +
\end{matrix}</math>
  
  
[[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.
+
W sumie kosinusów wyrazy dla <math>n>0</math> znoszą odpowiednie wyrazy dla <math>-n</math> (bo <math>cos(-x)=cos(x)</math>), w sumie
Sinusa o częstości 0,3 można odtworzyć dokładnie z samych wartości dyskretnych (kropki),
+
sinusów wyrazy dla <math>\pm n</math> dodają się (bo <math>sin(-x)=-sin(x)</math>)
podobnie dla granicznej częstości 0,5. Natomiast próbkowane z tą samą częstością szybsze
+
|}
oscylacje wprowadzają przekłamania &mdash; widoczna na samej górze oscylacja o częstości 1,3
+
Dostajemy
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)]].]]
 
  
 +
<equation id="eq:19">
 +
<math>
 +
\displaystyle \Theta(t) = \frac{1}{2} + \frac{2}{\pi}\sum_{n=1}^{\infty} \frac{\sin\left(2\pi (2n-1) t\right)}{(2n-1)}
 +
</math>
 +
</equation>
  
Pomimo tego, cyfrowy zapis dźwięku (płyty CD)
+
[[Plik:klasyczna_rys_2.png|bezramki|centruj|600px]]
zastąpił całkowicie
+
<!--|<figure id="fig:20"></figure>Od góry, kolejno:
analogowe "czarne płyty" z winylu &mdash; dlaczego?
+
funkcja <math>\Theta</math> (<xr id="eq:18">równanie </xr>) uzupełniona do funkcji okresowej,  pierwszych 30 współczynników szeregu Fouriera,  
<ref>
+
kwadraty współczynników szeregu Fouriera — dyskretne widmo,
Odpowiedź nie kryje się (niestety) w niższej cenie nośnika. Pomimo, że
+
pierwszy wyraz rozwinięcia Fouriera, sumy pierwszych 10, 50, 500 i 5000 wyrazów  <xr id="eq:19">rozwinięcia</xr>. <br>
technologia cyfrowa faktycznie pozwala na znacznie tańszą produkcję (tj.
+
Jak widać, najtrudniejsza do wyrażenia z pomocą funkcji
powielanie) przy zachowaniu wysokiej jakości &mdash; jak wyjaśnimy za chwilę &mdash; to
+
trygonometrycznych jest nieciągłość funkcji <math>\theta(t)</math> w punktach <math>\left\{\pm \frac{k}{2}, k \in N \right\}</math>; niejednorodna
jednak cena średnio dwukrotnie wyższa niż cena odp. płyty winylowej, która w
+
zbieżność szeregów Fouriera w tych rejonach nosi nazwę ''efektu Gibbsa''.]]
pierwszym okresie była uzasadniona wysokimi kosztami  wprowadzania nowej
+
-->
technologii, po jej rozpowszechnieniu pozostała na wywindowanym poziomie,
 
podwajając zyski wytwórni fonograficznych</ref>
 
* Po pierwsze, przy pewnych dodatkowych założeniach o sygnale ciągłym  <math>s(t)</math>, możliwe jest jego ''dokładne''  odtworzenie z dyskretnej sekwencji  próbek, jeśli odstęp próbkowania <math>\Delta t</math> dobrano odpowiednio dla danego  sygnału. Mówi o tym twierdzenie Nyquista.
 
* Po drugie, zapis cyfrowy umożliwia korekcję błędów.
 
  
 +
Od góry, kolejno:
 +
funkcja <math>\Theta</math> (<xr id="eq:18">równanie </xr>) uzupełniona do funkcji okresowej,  pierwszych 30 współczynników szeregu Fouriera,
 +
kwadraty współczynników szeregu Fouriera — dyskretne widmo,
 +
pierwszy wyraz rozwinięcia Fouriera, sumy pierwszych 10, 50, 500 i 5000 wyrazów  <xr id="eq:19">rozwinięcia</xr>. <br>
 +
Jak widać, najtrudniejsza do wyrażenia z pomocą funkcji
 +
trygonometrycznych jest nieciągłość funkcji <math>\theta(t)</math> w punktach <math>\left\{\pm \frac{k}{2}, k \in N \right\}</math>; niejednorodna
 +
zbieżność szeregów Fouriera w tych rejonach nosi nazwę ''efektu Gibbsa''.
  
 +
==[[Przekształcenie Fouriera]]==
 +
Przejdźmy do nieskończoności z okresem sygnału: <math>T\rightarrow\infty</math>.
 +
Wtedy odstęp <math>\left(\frac{2\pi}{T}\right)</math>
 +
między częstościami kolejnych elementów sumy szeregu Fouriera
  
===Zapis cyfrowy i korekcja błędów===
+
<math>\displaystyle
Aby zrozumieć, dlaczego łatwość korekcji błędów związana jest z
+
s(t) =\sum_{n=-\infty}^{+\infty} c_n e^{-i\frac{2\pi t}{T} n},
zapisem cyfrowym, przyjrzyjmy się bliżej analogowym i cyfrowym zapisom
+
</math>
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
+
dąży do <math>0</math> i suma przechodzi w całkę
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
 
dziewięć, a ostatnią będziemy dobierać tak, żeby suma kolejnych dziesięciu liczb zawsze wynosiła np. milion.
 
  
[[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.]]
+
<equation id="eq:21">
 +
<math>\displaystyle
 +
s(t)=\int_{-\infty}^{\infty}\hat{s}(f)e^{-i 2\pi t f} d f
 +
</math>
 +
</equation>
 +
 +
funkcja <math>\hat{s}(f)</math>, zastępująca dyskretny ciąg współczynników szeregu Fouriera
  
Taki sposób zapisu wprowadza redundancję, czyli
+
<math>\displaystyle
nadmiar informacji w zapisie, ponieważ przy prawidłowym odczycie
+
c_{n} = \frac{1}{T}\int_{0}^{T} s(t) e^\frac{2\pi i n t}{T} d t
wystarczyłoby znać dziewięć kolejnych liczb, aby wyznaczyć dziesiątą
+
</math>
(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ą
+
to '''transformata Fouriera''' sygnału <math>s(t)</math>, czyli wynik działania przekształcenia (transformacji) Fouriera <math>\mathcal{F}</math>.
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
+
<equation id="eq:22">
przestrzeni funkcji ciągłych &mdash; o ile nie tyczą się ''explicite''
+
<math>\displaystyle
efektów próbkowania. Teoria funkcji ciągłych jest asymptotycznie
+
\mathcal{F}\left( s(t) \right) \equiv \hat{s}(f)=\int_{-\infty}^{\infty}s(t)e^{i 2\pi f t} d t
zgodna z wynikami dla sekwencji dyskretnych &mdash; dla odstępu próbkowania
+
</math>
dążącego do zera. Jej rezultaty, prostsze pojęciowo i łatwiejsze do
+
</equation>
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
 
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.
+
<div align="right">
 +
[[Analiza_sygnałów_-_wykład|⬆]]  [[Szereg_Fouriera|]]
 +
</div>

Aktualna wersja na dzień 17:24, 16 lis 2024

Próbkowanie sygnałów analogowych

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.

AD.png

102, 195, 80, 16, 147, 178

Żeby odtworzyć fizyczne własności sygnału, czyli narysować zapisane wartości próbek 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 (formaty omawialiśmy 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, w którym zapisano dane wielokanałowe, jak np. kilka odprowadzeń EEG lub dane kilku spółek giełdowych, próbkowane i zapisywane w jednakowych odstępach czasu.

WakeEEG Svarog 3chans.png


Aliasing i częstość Nyquista

Aliasing gif.gif

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_s[/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.

Nyquist1.png

Sygnał dyskretny jako wektor

102, 195,  80,  16, 147, 178

Skoro sygnał to po prostu ciąg liczb, możemy go potraktować jak wektor. Na płaszczyźnie wektor to para współrzędnych (x, y), w przestrzeni trójwymiarowej trójka liczby (x, y, z), które wyobrażamy sobie jako strzałkę wiodącą od punktu (0, 0, 0) do (x, y, z). Sygnał składający się z pięciu punktów będzie wektorem w przestrzeni pięciowymiarowej, więc intuicja "strzałki" dla większości z nas przestaje być użyteczna. Pomimo tego, możemy wciąż korzystać z użytecznych pojęć z dziedziny algebry wektorów, jak ortogonalność czy iloczyn skalarny.


Iloczyn skalarny

Iloczyn skalarny przyjmiemy jako miarę podobieństwa dwóch sygnałów. Obliczać go będziemy tak samo jak dla wektorów — przypomnijmy: niech [math]\mathbf{x} = [x_1, x_2, x_3][/math], i [math]\mathbf{y} = [y_1, y_2, y_3][/math]; iloczyn skalarny tych wektorów oznaczamy [math]\mathbf x \cdot \mathbf y[/math] (zarówno wytłuszczenie symboli wektorów, jak i symbol mnożenia/ilocznu skalarnego "[math]\cdot[/math]", będziemy dalej pomijać):

[math]\displaystyle \mathbf a \cdot \mathbf b = \sum_{i=1}^3 x_i y_i = x_1 y_1 + x_2 y_2 + x_3 y_3[/math]

A jak to będzie wyglądać dla sygnałów złożonych z więcej niż trzech punktów? Weźmy

[math]x=[-2, -2, 2, -1, -2][/math]

[math]y=[-1, -1, 1, 1, 0][/math]

Zamiast strzałek w pięciowymiarowej przestrzeni, łatwiej wizualizować na wykresach wartości kolejnych próbek:

Product2.png

[math]x\cdot y = [-2, -2, 2, -1, -2] \cdot [-1, -1, 1, 1, 0] = 2+2+2-1+0 = 5[/math]


Ortogonalność

Kolejnym użytecznym pojęciem, które możemy zaczerpnąć bezpośrednio z algebry wektorów, jest ortogonalność. Dwa wektory (sygnały) są do siebie ortogonalne, jeśli ich iloczyn skalarny wynosi zero, jak poniżej:

Product6.png

W przypadku sygnału złożonego z 16 punktów, możemy ten fakt sprawdzić obliczając iloczyn skalarny punkt po punkcie, albo też zauważając prawidłowości występujące w każdym okresie górnego sygnału. W przypadku dłuższych i bardziej złożonych sygnałów może to już nie być takie oczywiste, jak np. ortogonalność wszystkich sinusów na poniższym rysunku, których częstości są całkowitymi wielokrotnościami częstości podstawowej:


Energia sygnału

Matematycznie energia sygnału [math]x[/math] to [math]\langle x,x \rangle[/math] (czyli [math]x\cdot x[/math], iloczyn skalarny sygnału "z samym sobą"). Dla sygnałów ciągłych [math]\langle x(t), x(t) \rangle = \int |x(t)|^2 dt[/math], dla sygnałów dyskretnych [math] \langle x[n], x[n] \rangle = \sum_n |x[n]|^2[/math]. Fizycznie musimy wziąć pod uwagę wspomniane wcześniej stałą kalibracji i częstość próbkowania:

  • Jeśli sygnałem będzie prąd elektryczny o natężeniu [math]i(t)[/math] mierzonym w amperach, płynący w obwodzie o oporności [math]R[/math] omów, to wytracana przez niego energia wyniesie [math]E_i = R \int |i(t)|^2 dt[/math] dżuli.
  • W przypadku sygnału dyskretnego [math]x[t][/math], całkę [math]\int x(t) dt [/math] zastępujemy sumą pól kolejnych prostokątów o wysokości [math]x[n][/math] i szerokości równej odstępowi między kolejnymi punktami [math]\Delta t = \frac{1}{f_s}[/math]
[math]E_{x[n]} = \Delta t \sum_n |x(n)|^2 = \frac{1}{f_s} \sum_n |x(n)|^2 [/math]


Product3.png


Liczby zespolone

Przypomnijmy w skrócie: [math]i^2=-1[/math]. Liczbę zespoloną [math]z[/math] możemy zapisać w postaci algebraicznej jako

[math]z=a+bi,[/math]

gdzie [math]a[/math] to część rzeczywista, [math]b[/math] — część urojona.

Sprzężenie zespolone liczby [math]z[/math] oznaczamy [math]\overline{z}[/math]:

[math]\overline{z} = a - bi[/math]

a jej moduł to [math]|z| = \sqrt{a^2 + b^2}[/math] (inaczej [math]|z| = z \cdot \overline{z}[/math]).

Postać trygonometryczna:

[math]z = a + bi = |z| \cdot \dfrac{a}{|z|} + |z| \cdot \dfrac{b}{|z|}i = |z| \cdot (\cos \phi + i\sin \phi).[/math]

Wykorzystując wzór Eulera[1]

[math]e^{i\phi} = \cos(\phi) + i\sin(\phi)[/math]

możemy liczbę zespoloną zapisać jako

[math]z = |z|e^{i\phi}[/math]


Szereg Fouriera

Sygnał okresowy (o okresie [math]T[/math]) można przedstawić w postaci szeregu Fouriera:

[math] s(t) =\sum_{n=-\infty}^{+\infty} c_n e^{-i\frac{2\pi n}{T} t}, [/math]

gdzie

[math] c_{n} = \frac{1}{T}\int_{0}^{T} s(t) e^{i \frac{2\pi n}{T} t} d t [/math]

Każdą funkcję okresową możemy przedstawić w postaci sumy sinusów i kosinusów z odpowiednimi wagami — przypomnijmy: [math]e^{i \phi} = \cos(\phi) + i \sin(\phi)[/math].

Wagi [math]c_n[/math] możemy traktować jako względny udział odpowiadających im częstości.


Przykład: szereg Fouriera dla prostokąta

Policzmy postać współczynników Fouriera dla funkcji [math]\Theta(t)[/math], określonej na przedziale [math][0,1][/math] w następujący sposób:

[math] \Theta(t) = \left\{ \begin{matrix} 1 &, & t \in [0, \frac{1}{2})\\ 0 &, & t \in [ \frac{1}{2}, 1] \end{matrix} \right. [/math]

Dostajemy

[math] \displaystyle \Theta(t) = \frac{1}{2} + \frac{2}{\pi}\sum_{n=1}^{\infty} \frac{\sin\left(2\pi (2n-1) t\right)}{(2n-1)} [/math]
Klasyczna rys 2.png

Od góry, kolejno: funkcja [math]\Theta[/math] (równanie 3) uzupełniona do funkcji okresowej, pierwszych 30 współczynników szeregu Fouriera, kwadraty współczynników szeregu Fouriera — dyskretne widmo, pierwszy wyraz rozwinięcia Fouriera, sumy pierwszych 10, 50, 500 i 5000 wyrazów rozwinięcia 4.
Jak widać, najtrudniejsza do wyrażenia z pomocą funkcji trygonometrycznych jest nieciągłość funkcji [math]\theta(t)[/math] w punktach [math]\left\{\pm \frac{k}{2}, k \in N \right\}[/math]; niejednorodna zbieżność szeregów Fouriera w tych rejonach nosi nazwę efektu Gibbsa.

Przekształcenie Fouriera

Przejdźmy do nieskończoności z okresem sygnału: [math]T\rightarrow\infty[/math]. Wtedy odstęp [math]\left(\frac{2\pi}{T}\right)[/math] między częstościami kolejnych elementów sumy szeregu Fouriera

[math]\displaystyle s(t) =\sum_{n=-\infty}^{+\infty} c_n e^{-i\frac{2\pi t}{T} n}, [/math]

dąży do [math]0[/math] i suma przechodzi w całkę

[math]\displaystyle s(t)=\int_{-\infty}^{\infty}\hat{s}(f)e^{-i 2\pi t f} d f [/math]

funkcja [math]\hat{s}(f)[/math], zastępująca dyskretny ciąg współczynników szeregu Fouriera

[math]\displaystyle c_{n} = \frac{1}{T}\int_{0}^{T} s(t) e^\frac{2\pi i n t}{T} d t [/math]

to transformata Fouriera sygnału [math]s(t)[/math], czyli wynik działania przekształcenia (transformacji) Fouriera [math]\mathcal{F}[/math].

[math]\displaystyle \mathcal{F}\left( s(t) \right) \equiv \hat{s}(f)=\int_{-\infty}^{\infty}s(t)e^{i 2\pi f t} d t [/math]


  1. wzorem Eulera bywa również nazywane równanie [math]e^{i\pi}+1=0[/math]