EEG/Pracownia EEG/SSVEP 2: Różnice pomiędzy wersjami

Z Brain-wiki
(Utworzono nową stronę "=Koncepcja drgania uogólnionego. Transformata Hilberta= ==Wstęp== Sygnałem najczęściej występującym w przyrodzie oraz najczęściej stosowanym w technice jest syg...")
 
 
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
=Koncepcja drgania uogólnionego. Transformata Hilberta=
 
==Wstęp==
 
Sygnałem najczęściej występującym w przyrodzie oraz najczęściej stosowanym w technice jest sygnał harmoniczny o postaci:
 
<equation>
 
<math>x(t) = A \sin(\omega t + \varphi_0)</math>
 
</equation>
 
gdzie: <br>
 
<math>t</math> &mdash; chwila czasu <br>
 
<math>A</math> &mdash; amplituda sygnału,<br>
 
&omega; &mdash; częstość sygnału,<br>
 
&phi;<math>_0</math> &mdash; faza początkowa sygnału.<br>
 
  
Okazuje się, że istnieje szeroka klasa sygnałów rzeczywistych, które można przedstawić w postaci tzw. drgania uogólnionego:
 
<equation>
 
<math>x(t) = A(t) \sin(\Omega(t)\cdot t)</math>
 
</equation>
 
 
gdzie: <br>
 
<math>t</math> &mdash; chwila czasu <br>
 
<math>A(t)</math> &mdash; amplituda chwilowa sygnału ''x''(''t'') (jego obwiednia),<br>
 
&Omega;(t) &mdash; częstość chwilowa sygnału ''x''(''t''),<br>
 
 
Do klasy sygnałów, które mogą być reprezentowane w postaci drgania uogólnionego, należą m.in. wszystkie sygnały o ograniczonej energii i ograniczonej mocy średniej przedziałami ciągłe i bez składowej stałej (tzw. sygnały przestrzeni <math>L^2</math>).
 
W celu przedstawienia sygnału <math>x(t)</math> jako drgania uogólnionego należy wpierw wyznaczyć jego ''sygnał analityczny'' ''z''(''t''), który zdefiniowany jest w następujący sposób:
 
 
<equation>
 
<math>z(t) = x(t) + ix_H(t)\;</math>
 
</equation>
 
 
gdzie: <br>
 
<math>i=\sqrt{-1}</math><br>
 
<math>x_H(t)</math> &mdash; transformata Hilberta sygnału <math>x(t)</math>.<br>
 
 
Transformatę Hilberta <math>x_H(t)</math> sygnału <math>x(t)</math> i transformatę do niej odwrotną definiujemy jak poniżej:
 
<equation>
 
<math>
 
x_H(t) = \frac{1}{\pi}\int_{-\infty}^{\infty} \frac{x(\tau)}{t - \tau}d\tau
 
</math>
 
</equation>
 
<br>
 
<equation>
 
<math>
 
x(t) = -\frac{1}{\pi}\int_{-\infty}^{\infty} \frac{x_H(\tau)}{t - \tau}d\tau
 
</math>
 
</equation>
 
 
'''Uwaga praktyczna:'''
 
do wyznaczania sygnału analitycznego korzysta się z jego następującej własności:
 
Widmo sygnału analitycznego odpowiadającego sygnałowi rzeczywistemu jest zerowe
 
dla ujemnych częstości, zaś dla dodatnich częstości ma podwojoną amplitudę:
 
<math>x_a = F^{-1}\left(F(x)\cdot 2U\right)</math>
 
gdzie ''F'' &mdash; transformacja Fouriera, a ''U'' funkcja schodkowa.
 
Metoda ta zaimplementowana jest w funkcji <tt>scipy.signal.hilbert</tt>
 
 
Jak można zauważyć, sygnał analityczny jest funkcją zespoloną, w związku z czym można go przedstawić w postaci:
 
<equation>
 
<math>
 
z(t) = \left|z(t)\right|e^{i\varphi(t)}
 
</math>
 
</equation>
 
gdzie (patrz równanie (3)):<br>
 
<math>
 
\begin{array}{l}
 
\left|z(t)\right| = \sqrt{x^2(t) + x^2_H(t)} \\
 
\\
 
\varphi(t) = \mathrm{arc\,tg}(\frac{x_H(t)}{x(t)})
 
\end{array}
 
</math>
 
<br>
 
 
Wielkości te służą do wyznaczania chwilowej fazy &phi; (wzór powyżej), chwilowej amplitudy ''A'' (obwiedni) oraz chwilowej częstości &Omega; sygnału <math>x(t)</math>:
 
 
<math>
 
\begin{array}{l}
 
A(t)=\left|z(t)\right| \\
 
\\
 
\Omega(t) = \frac{d\varphi(t)}{dt}
 
\end{array}
 
</math>
 
 
co umożliwia przedstawienie sygnału ''x''(''t'') w postaci drgania uogólnionego:
 
<equation>
 
<math>x(t) = A(t) \sin(\Omega(t)\cdot t)</math>
 
</equation>
 
 
Porównując powyższy wzór ze wzorem na funkcję harmoniczną:
 
<equation>
 
<math>x(t) = A \sin(\omega t + \varphi_0)</math>
 
</equation>
 
 
widzimy, że sygnały nieharmoniczne charakteryzują się zmienną w czasie amplitudą i częstością oraz nie mają określonej fazy początkowej. Ten ostatni parametr jednak również może być wyznaczony, pod warunkiem iż określimy go względem pewnej stałej w czasie częstości &omega;<sub>0</sub>(''t''):
 
<equation>
 
<math>\varphi(t)=\omega_0\cdot t + \varphi_0(t)</math>
 
</equation>
 
gdzie: <br>
 
<math>\varphi_0(t)</math> &mdash; faza chwilowa sygnału <math>x(t)</math>.<br>
 
 
Faza chwilowa jest zatem zdefiniowana jednoznacznie, ale tylko względem określonej częstości <math>\omega_0</math>. W przypadku gdy analizujemy sygnały szerokopasmowe, wyznaczenie fazy chwilowej jest możliwe po przefiltrowaniu sygnału filtrem pasmowo-przepustowym.
 
 
==Ćwiczenia symulacyjne==
 
Proszę zaimplementować funkcje generujące następujące przebiegi czasowe (oznaczenia: ''F<sub>s</sub>'' &mdash; częstość próbkowania, ''T'' &mdash; czas trwania w sekundach, [[STATLAB:%C4%86wiczenia_1#Sygna.C5.82y_testowe|analogicznie do tego]]):
 
* sinusoida o zadanej częstości ''f'' i fazie <math>\phi</math>: <tt>y = sin(f, phi, Fs, T)</tt>,
 
* funkcja Gabora o zadanym położeniu szerokości i częstości <tt>y = gabor(t0, sigma, omega, Fs, T)</tt>:
 
: <math>g_1(t) = \exp\left(-\frac{(t-t_0)^2}{2 \sigma^2}\right)\cdot \cos\left(\omega(t-t_0) \right)</math>.
 
 
===Ćwiczenie 1===
 
* Wygeneruj 2-sekundowy odcinek sygnału Gabora o pozycji w czasie ''t''<sub>0</sub> = 1 s, częstości 16 Hz, skali 0,1 s i częstości próbkowania 128 Hz.
 
* Wyznacz i narysuj amplitudę chwilową sygnału Gabora.
 
 
===Ćwiczenie 2===
 
<!--* Wygeneruj 2-sekundowy odcinek sygnału  o pozycji w czasie ''t''<sub>0</sub> = 1 s, częstości 20 Hz, skali 0,1 s.-->
 
* Wyznacz i narysuj amplitudę chwilową sygnału sinusoidalnego, o częstości 16 Hz i częstości próbkowania 128 Hz.
 
* Wyznacz i narysuj fazę chwilową sygnału sinusoidalnego, korzystając ze związku:
 
 
<equation>
 
<math>\varphi(t)=\omega_0\cdot t + \varphi_0(t)</math>
 
</equation>
 
 
===Ćwiczenie 3===
 
Wygeneruj dwa sygnały sinusoidalne o tej samej częstości 32 Hz i częstości próbkowania 128 Hz, ale różnych fazach początkowych. Pierwszy sygnał powinien mieć fazę początkową równą 0, drugi sygnał sinusoidalny powinien mieć fazę początkową równą &pi;/4. Za pomocą transformaty Hilberta wyznacz różnicę faz symulowanych sygnałów.
 
===Ćwiczenie 4===
 
To ćwiczenie jest ku przestrodze.
 
Wytwórz sygnał będący sumą dwóch sinusoid: jednej o częstości 30 i drugiej o częstości  32 Hz. Wykreśl przebieg sygnału i jego amplitudy chwilowej.
 
 
 
==Ćwiczenia na danych pomiarowych==
 
 
===Ćwiczenie 1===
 
W zebranych sygnałach SSVEP wybierz zapisy dla trzech różnych częstości stymulacji (po jednym dla każdej częstości). Do analizy wybierz trzy kanały EEG, dla których sygnał SSVEP jest a) bardzo wyraźny; b) widoczny, ale słabszy; c) w zasadzie niewidoczny. Do analizy wybierz fragmenty od 2 sekund przed rozpoczęciem stymulacji do 2 sekund po jej zakończeniu.
 
 
Dla każdej wybranej częstości stymulacji wybrane kanały EEG przefiltruj filtrem wąskopasmowym przepuszczającym częstości skupione wokół tej częstości stymulacji. Do przefiltrowanych sygnałów zastosuj transformację Hilberta, wyznacz amplitudę i częstość chwilową. Wyznacz fazę chwilową dla &omega;<sub>0</sub> równej częstości stymulacji. Wypróbuj dwa sposoby filtrowania: &bdquo;w jedną stronę&rdquo; (<tt>filter</tt>) i &bdquo;w obie strony&rdquo; (<tt>filtfilt</tt>).
 
 
Wyrysuj przefiltrowane sygnały wraz z wyliczoną amplitudą chwilową. Do rysunku dodaj wykres sygnału triggera aby widać było początek i koniec stymulacji. Narysuj też wykres zależności częstości chwilowej i fazy chwilowej od czasu.
 

Aktualna wersja na dzień 06:54, 24 wrz 2015