-1-
AKADEMIA GÓRNICZO-HUTNICZA
im. St. Staszica w Krakowie
Wydział EAIiE, Katedra Automatyki
Laboratorium Biocybernetyki
Przedmiot: Przetwarzanie sygnałów w systemach diagnostyki medycznej.
Temat projektu: Detekcja arytmii.
Spis treści:
1. ABSTRAKT .................................................................................................................................................. 2
2. WSTĘP .......................................................................................................................................................... 3
3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA ......................................................................... 4
4. REZULTATY I WNIOSKI ......................................................................................................................... 6
5. PODSUMOWANIE ..................................................................................................................................... 6
6. LITERATURA ............................................................................................................................................. 6
7. DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA .................. 8
8. DODATEK B: REALIZACJA PROPONOWANEGO ROZWIĄZANIA .............................................. 9
9. DODATEK C. OPIS INFORMATYCZNY PROCEDUR ...................................................................... 10
10. DODATEK D. SPIS ZAWARTOŚCI DOŁĄCZONYCH NOŚNIKÓW (DYSKIETEK, CD ROMU)12
Wykonali: Urszula Ciaputa, Janusz Kamieński
V rok Informatyki Stosowane, Wydział EAIiE, AGH-UST
Konsultant: prof. dr hab. inż. Piotr Augustryniak
Wersja 1.0
Kraków, styczeń 2011.
ARRH_DET
-2-
1. Abstrakt
Celem niniejszego projektu było przygotowanie biblioteki oraz programu, który pozwalałby na
rozpoznawanie typu arytmii serca z danych przekazywanych z zewnątrz. W ramach pracy
przygotowano bibliotekę napisaną w języku ANSI C, która pozwala na wykorzystanie
rozpoznawania arytmii serca w osobnym programie, który może realizować więcej zadań.
Rozpoznawanie arytmii odbywa się przy zastosowaniu sztucznych sieci neuronowych uczonych
przez przykładowe dane z wykorzystaniem biblioteki FANN. Ponadto przygotowano program,
który pozwala nauczyć sieć neuronową rozpoznawania arytmii oraz sprawdzenie pracy biblioteki
rozpoznającej arytmie serca.
Słowa kluczowe: arytmia serca, sztuczne sieci neuronowe, ANN, FANN, ANSI C
-3-
2. Wstęp
Cele i założenia projektu
Celem projektu jest zaimplementowanie algorytmu detekcji podstawowych arytmii na podstawie
sekwencji morfologii zespołu QRS. Program ma stanowić część bardziej złożonego systemu, musi
więc zachowywać kompatybilną strukturę opisu sygnału EKG i sygnałów sterujących. Jakość
detekotora ma zostać przetestowana z użyciem generatora sygnałów wzorcowych EKG oraz bazy
danych MIT-BIH.
Rodzaje arytmii
Według [1] arytmie to sekwencje pobudzeń o ustalonych wzorcach, zdefiniowane przez następstwo
zespołów o określonej morfologii, interwał międzyuderzeniowy RR i niekiedy liczbę zespołów w
sekwencji. Podstawowo arytmie dzieli się na nadkomorowe i komorowe.
Do arytmii nadkomorowych zaliczane są m.in.:
pauza - zbyt długa przerwa pomiędzy uderzeniami
tachykardia nadkomorowa (częstoskurcz nadkomorowy; ang. Supraventricular
Tachykardia, SVT) – szybki (powyżej 100 uderzeń na minutę) rytm serca pochodzący z
przedsionków lub węzła przedsionkowo-komorowego
migotanie przedsionków (ang. Atrial Fbrillation, AF, A-fib)
bradykardia nadkomorowa – bardzo wolny (poniżej 60 uderzeń na minutę) rytm serca
napadowy częstoskurcz nadkomorowy (ang. Paroxysmal Supraventricular Tachykardia,
PSVT)
Do arytmii komorowych zaliczane są m.in.:
tachykardia komorowa (częstoskurcz komorowy; ang. Ventricular Tachykardia, VT)
migotanie komór (ang. Ventricular Fibrillation, VF, V-fib)
przedwczesny skurcz komorowy serca (ang. Premature Ventricular Contraction, PVC;
Ventricular Premature Beat, VPB):
◦ bigeminia – przedwczesny skurcz występuje po każdym normalnym uderzeniu
◦ trigeminia – po każdym normalnym uderzeniu występują dwa skurcze
Istotne jest zwrócenie uwagi na możliwość występowania konfliktów (wystąpienie jednej z
sekwencji arytmii w czasie trwania innej). Rozwiązywane są one dzięki nadaniu priorytetów
różnym rodzajom arytmii.
W zależności od podejścia (jednoprzebiegowe lub wieloprzebiegowe) uzyskuje się nieco odmienne
rezultaty: przy jednokrotnym przeglądzie sekwencji zespołów QRS arytmia o niższym priorytecie
ustępuje arytmii o wyższym priorytecie dopóki ta się nie zakończy, natomiast w przypadku trzech
-4-
przebiegów najpierw wykrywa się arytmie o najwyższym priorytecie, a następnie (pomijając już
zidentyfikowane odcinki) te o niższym.
Istniejące rozwiązania
W literaturze znaleźć można wiele przykładów algorytmów służących do wykrywania zaburzeń
pracy serca. Niektóre z nich służą do wykrywania konkretnego rodzaju (rodzajów) arytmii, podczas
gdy inne mają bardziej ogólne zastosowanie. Wiele istniejących, komercyjnych rozwiązań używa
parametrów morfologicznych (takich jak dopasowanie szablonów), autokorelacji i różnych
parametrów z dziedziny czasu (amplitudy, szerokości, energii itp.) w celu klasyfikowania zespołów
QRS jako należących do danego typu arytmii. Wśród propozycji znajdujących się w literaturze
można znaleźć przykłady użycia transformaty Karhunena-Loevego (analizy głównych składowych)
wraz z analizą sekwencyjną do wykrywania tachykardii komorowych i migotania komór [3],
wykorzystania ukrytych modeli Markowa do lepszej detekcji arytmii nadkomorowych [4],
zastosowania funkcji probablistycznych w celu poprawienia jakości detekcji arytmii [5,6], próby
zastosowania analizy spektralnej do wykrywania bigeminii i trigeminii [7], użycia transformacji
falkowej do klasyfikacji bradykardii i tachykardii [8,9] czy wykorzystania fraktali do
wyodrębnienia charakterystycznych cech zespołów QRS [10][11]. Oprócz wymienionych wcześniej
propozycji znaleźć można jeszcze wiele innych, naszą uwagę przyciągnęły jednak próby
wykorzystania sieci neuronowych w detekcji i klasyfikacji arytmii.
Sieci neuronowe wykorzystywane są do klasyfikacji zespołów QRS na podstawi wyodrębnionych
wcześniej (na różne sposoby) cech. Przykładem może tu być [11], gdzie sieć neuronowa została
wykorzystana do klasyfikacji na podstawie cech uzyskanych przy użyciu transformacji fraktalnej.
Detekcja arytmii przy użyciu sieci neuronowych i jej rezultaty opisane zostały także w [12].
Ciekawa metoda wykrywania i klasyfikacji arytmii znajduje się w [13]. Wykorzystuje ona
przedstawienie sygnału EKG w przestrzeni fazowej, a następnie klasyfikuje tak powstały kształt
przy pomocy sieci neuronowej z propagacją wsteczną jako jeden z pięciu możliwych rodzajów:
1. normalne uderzenie (NSR)
2. przedwczesny skurcz komorowy serca (PVC)
3. migotanie przedsionków (AF)
4. tachykardia komorowa (VT)
5. migotanie komór (VF)
3. Koncepcja proponowanego rozwiązania
Dane wejściowe i wyjściowe
Dostępnymi danymi wejściowymi dla algorytmu będą:
-5-
1. sygnał EKG o ustalonej częstotliwości próbkowania
2. wykryte zespoły QRS
2.1. morfologia zespołu QRS
a) zespół nadkomorowy SV
b) zespół komorowy V
c) zespół inny, którego pochodzenia nie da się automatycznie określić
d) artefakt, omyłkowo uznany za zespół QRS
Na wyjściu algorytm ma zwracać listę wykrytych typów arytmii, wraz z odniesieniami do sygnału
wejściowego (początek i koniec wykrytej arytmii).
Przekształcenie sygnału EKG do przestrzeni fazowej
Załóżmy, że sygnał EKG jest reprezentowany przez współrzędne X(k) w przestrzeni fazowej. W
takim wypadku dynamiczne zachowanie sygnału może zostać odtworzone poprzez następstwo
punktów X(k) w przestrzeni fazowej.
Wektory X(k) w wielowymiarowej przestrzeni fazowej konstruowane są przy użyciu opóźnionych
w czasie wartości sygnału, co określa współrzędne wykresu przestrzeni fazowej.
X(k) = { x(k), x(k+t), ..., x(k+(E-1)t)}
k = 1,2,...,M-E
Gdzie X(k) to punkt trajektorii w chwili k, x(k + it) to współrzędne w przestrzeni fazowej
odpowiadające opóźnionym w czasie wartościom sygnału, t to opóźnienie pomiędzy kolejnymi
punktami sygnału, M to ilość próbek użytych do rekonstrukcji, a E to ilość wymiarów.
Opóźnienie czasowe powinno wynosić między 7 a 15 ms.
W przypadku dwuwymiarowej rekonstrukcji macierz A otrzymuje się używając sygnału x(k) oraz
x(k+t).
A = [ x(1) x(2) ... x(M) || x(1+t) x(2+t) ... x(M+t) ]
Wykres przestrzeni fazowej otrzymuje się robiąc wykres wiersza drugiego w zależności od wiersza
pierwszego macierzy A. Wartości powinny być znormalizowane, co osiąga się poprzez dzielenie
każdego elementu przez q, gdzie:
q = | max[x(k)] – min[x(k)] | 1 <= k <= M
Po znormalizowaniu zakresy na obu osiach powinny wynosić -1 do 1.
-6-
Stworzenie macierzy gęstości przestrzeni fazowej
Aby stworzyć macierz gęstości dzielimy przestrzeń fazową przy pomocy siatki 20x20 i sumujemy
ilość elementów w każdym z tak powstałych kwadratów, otrzymując c(i,j). Dzięki zastosowaniu
normalizacji ograniczyliśmy możliwe położenia punktów na wykresie. Wartości c(i,j) ze 100
kwadratów położonych w regionie -0.5,0.5 na każdej z osi będą wykorzystywane do dalszej
klasyfikacji.
Sieć neuronowa
Sieć jest trójwarstwowa, posiada 301 wejść i 16 wyjść, odpowiadającym wykrywanym rodzajom
arytmii. Uczenie sieci odbywa się za pomocą algorytmu Quickprop.
Do zaimplementowania sieci wykorzystana zostanie biblioteka FANN (Fast Artificial Neural
Network).
Dodatkowe dane
Na podstawie dodatkowych danych może nastąpić identyfikacja innych elementów. Interwał RR
(między szczytami R zespołów QRS) może zostać wykorzystany do określenia wystąpienia pauzy
oraz bradykardii/tachykardii. Informacja o rodzajach występujących po sobie zespołów QRS może
posłużyć do identyfikacji bigeminii (NSR po którym występuje jeden PVC) oraz trigeminii (NSR
po którym występują dwa PVC). Dodatkowo, posiadając informacje o uprzednio
zidentyfikowanych artefaktach można z góry je odrzucić.
Wyniki
W przypadku zidentyfikowania zespołu innego niż NSR zapamiętywany jest numer tego zespołu,
dzięki czemu możliwe jest późniejsze wskazanie miejsca w sygnale w którym wystąpiła arytmia.
4. Rezultaty i wnioski
Program charakteryzuje się długim czasem oczekiwania na wyniki (przetwarzany jest bowiem na
raz cały sygnał) i niskim poziomem skuteczności (spowodowanym prawdopodobnie przez
dominację arytmii typu pojedyncze przedwczesne pobudzenie komorowe – VE – w bazie testowej
oraz ogólną małą ilość przykładów). W skrajnym przypadku wszystkie (nawet prawidłowe)
uderzenia są klasyfikowane jako VE, mimo iż błąd średniokwadratowy osiągany przez sieć w
trakcie nauki jest bardzo niski (rzędu 0.05).
5. Podsumowanie
Zaimplementowana przez nas metoda niestety okazała się nieskuteczna. Dobranie odpowiednich
parametrów sieci neuronowej (liczba warstw ukrytych i ilość neuronów, które się w nich znajdują,
-7-
próg od którego dane wyjście jest uznawane za wybrane przez sieć) okazało się bardzo trudne, a
wręcz niemożliwe. Ponadto baza testowa zawiera głównie jeden typ arytmii (pojedyncze
przedwczesne pobudzenie komorowe), co sprawiło, że program nauczył się rozpoznawać tylko
jego, resztę rodzajów ignorując – do tego stopnia, że nawet prawidłowe uderzenia często były
mylone z tymże.
Rezultaty te nie są zachęcające, jednakże wynika to prawdopodobnie ze zbyt małej ilości
przykładów testowych oraz zbytniej generalizacji oczekiwań w stosunku do możliwości sieci (w
artykule [13], na którym oparliśmy swoją pracę, autorzy używali sieci do bardzo ogólnej
klasyfikacji arytmii). Lepsze efekty miało by więc prawdopodobnie podejście mieszane, w którym
(dobrze nauczona) sieć wykorzystywana jest do ogólnej klasyfikacji, natomiast szczegółowe
rodzaje arytmii klasyfikowane są z pomocą innych metod.
6. Literatura
[1] Augustyniak, P.; Przetwarzanie Sygnałów Elektrodiagnostycznych, UWND-AGH 2001
[2] http://en.wikipedia.org/wiki/Arrhythmia, dostęp: 2.12.2010
[3]Dorsett, T.J.; Guilak, F.; Taylor, L.A.; A real-time ventricular arrhythmia detection system based
on the KL transform and sequential-hypothesis testing, Engineering in Medicine and Biology
Society, 1995, Volume 2, p. 1007 - 1008
[4] Coast, D.A.; Stern, R.M.; Cano, G.G.; Briller, S.A. An approach to cardiac arrhythmia analysis
using hidden Markov models, IEEE Transactions on Biomedical Engineering, 1990, Volume 37,
Issue 9, p. 826 - 836
[5] Elghazzawi, Z.; Geheb, F.; A knowledge-based system for arrhythmia detection, Computers in
Cardiology, 1996, p. 541 – 544
[6] Owis, M.I.; Abou-Zied, A.H.; Youssef, A.-B.M.; Kadah, Y.M.; Study of features based on
nonlinear dynamical modeling in ECG arrhythmia detection and classification, IEEE Transactions
on Biomedical Engineering, 2002, Volume 49, Issue 7, p. 733 – 736
[7] Szilagyi, L.; Application of the Kalman filter in cardiac arrhythmia detection, Engineering in
Medicine and Biology Society, 1998, Volume 1, p. 98 – 100
[8] Daqrouq, K.; Abu-Isbeih, I.N.; Arrhythmia Detection using Wavelet Transform, EUROCON,
2007, p. 122 – 126
[9] Yang Shan-xiao; Chen Cai-ming; Dai Yu-liang; Yang Guang-ying; The Research of Arrhythmia
Algorithm Based on Fuzzy Neural Network, Electronic Commerce and Security (ISECS), 2010 , p.
131 – 133
-8-
[10] Raghav, S.; Mishra, A.K.; Fractal feature based ECG arrhythmia classification, TENCON
2008 - 2008 IEEE Region 10 Conference, p. 1 – 5
[11] Chia-Hung Lin; Chao-Lin Kuo; Jian-Liung Chen; Wei-Der Chang; Fractal features for cardiac
arrhythmias recognition using neural network based classifier, International Conference on
Networking, Sensing and Control, 2009, p. 930 – 935
[12] Jadhav, S.M.; Nalbalwar, S.L.; Ghatol, A.; Artificial Neural Network based cardiac
arrhythmia classification using ECG signal data, International Conference On Electronics and
Information Engineering (ICEIE), 2010, Volume 1, p. 228 – 231
[13] Srinivasan, N.; Wong, M.T.; Krishnan, S.M.; A new phase space analysis algorithm for
cardiac arrhythmia detection, Engineering in Medicine and Biology Society, 2003. Proceedings of
the 25th Annual International Conference of the IEEE, Volume 1, p. 82 – 85
7. DODATEK A: Opis opracowanych narzędzi i metody postępowania
Program należy uruchamiać z poziomu konsoli. Aplikacja może jest zrealizowana tak, by można
było z niej korzystać zarówno w systemie GNU/Linux jak i Windows. Aby korzystać z projektu
wymagana jest obecność zainstalowanej w systemie biblioteki FANN 2.0. Ponieważ działanie tej
biblioteki jest ściśle zależne od systemu operacyjnego należy dokonać indywidualnej jej instalacji
bądź kompilacji w systemie operacyjnym. W przypadku systemów GNU/Linux można dokonać
instalacji za pomocą pakietów (zależy od dystrybucji). W systemie Windows należy przeprowadzić
kompilację biblioteki FANN (szczegóły na stronie twórców biblioteki: http://leenissen.dk/fann/ ).
Także z tego powodu uruchomienie programu wymaga jego skompilowania przy skonfigurowanym
odpowiednio środowisku IDE (ustawionych poprawnie ścieżkach do biblioteki FANN). Projekt
nasz został przygotowany w środowisku Eclipse.
Do programu należy przekazać parametry niezbędne do jego pracy:
1. mode – tryb pracy programu; do wyboru: learning (tryb nauczania sieci neuronowej) oraz
working (tryb pracy sieci, w którym przyjmuje ona wyjście i zwraca wyniki);
2. signal_filename – ścieżka do pliku binarnego, który zawierającego sygnał EKG;
3. qrs_filename – ścieżka do pliku z danymi wykrytych QRS w sygnale EKG podanym jako
parametr 2;
4. output_arrhythmia_filename – ścieżka do pliku wyjściowego, w którym mają być zapisane
dane o wykrytych arytmiach;
-9-
5. nn_configuration_filename – plik zawierający strukturę sieci neuronowej. Jeżeli nie istnieje,
w trybie learning zostanie utworzony;
6. arrhythmia_comparison_filename – [opcjonalny parametr] plik z przykładowymi danymi
wyjściowymi, służącymi sieci neuronowej do porównania ze swoim wyjściem w trybie
learning.
Na podstawie parametrów wejściowych program przeprowadzi nauczanie sieci i wygeneruje plik ze
strukturą i wagami sztucznej sieci neuronowej lub przeprowadzi operację obliczeń na danych
wejściowych i zapisze do pliku wyjściowego wykryte przez sieć arytmie serca.
Przykład polecenia uruchamiającego (znak „\” oznacza kontynuację linii poniżej):
arrhythmia_detector.exe learning ah_21_1/ah_21_1.dcm ah_21_1/qrs_attr.out \
arrh_detected.out network1.net ah_21_1/arh_attr.out
arrhythmia_detector.exe working my_signal_data.dcm my_signal_data_qrs_attr.out \
arrh_detected_live.out network5.net
W efekcie działania programu w trybie working zostanie utworzony wyjściowy plik tekstowy z
wykrytymi arytmiami serca.
8. DODATEK B: Realizacja proponowanego rozwiązania
Projekty wykonany został w systemie GNU/Linux, dystrybucja Fedora 13 w środowisku Eclipse z
użyciem kompilatora gcc. Nic nie stoi jednak na przeszkodzie, by przenieść projekt na system
Windows. Wymagana jest wtedy obecność skompilowanej biblioteki FANN (informacja w
poprzednim rozdziale) oraz poprawne podanie ścieżek do nagłówków i plików bibliotecznych.
Program został napisany w języku C, stylu ANSI.
Aby móc wykonać projekt w stylu ANSI C konieczna była modyfikacja nagłówkowych plików
dostarczonych przez prowadzącego tak, by były one poprawnie przetwarzane przez kompilator.
Konieczne było dodanie definicji typów dla struktur:
typedef struct QRS_ATTR QRS_ATTR;
typedef struct ARH_ATTR_ITEM ARH_ATTR_ITEM;
Ponadto konieczna była zmiana typów danych wewnątrz struktur uchar na unsigned char.
-10-
9. DODATEK C. Opis informatyczny procedur
Program podzielony został na kilka plików, z których każdy posiada osobną funkcjonalność:
arrhythmia_detector.c
Plik ten jest plikiem głównym programu, który posiada tylko funkcję main.
int main(int argc, char** argv)
Funkcja ta odpowiada za przetworzenie parametrów z linii poleceń, załadowanie danych z plików
wejściowych do struktur oraz uruchomienie algorytmów uczenia (learning mode) lub przetwarzania
danych przez sieć (working mode). Na koniec funkcja zapisuje dane wyjściowe do podanego w
parametrach uruchomieniowych pliku.
nnarrhythmia.c
Plik ten zawiera dwie główne funkcje implementujące algorytmy uczenia sieci neuronowych
rozpoznawania arytmii serca oraz detekcji tych arytmii w trybie pracy.
float arrhythmia_detection_learning(unsigned char** sig,unsigned int sig_size,
QRS_ATTR* qrs_data, unsigned int qrs_size, ARH_ATTR_ITEM** comp_results,
unsigned int arh_size[], char* nn_configuration_filename)
Funkcja ta odpowiada za przeprowadzenie nauczania sieci neuronowej. Argumenty przekazane do
funkcji to:
sig – załadowany sygnał EKG z pliku wejściowego
sig_size – ilość próbek sygnału wejściowego
qrs_data – tablica struktur zawierających wykryte zespoły QRS
qrs_size – rozmiar tablicy qrs_data
comp_results – tablica dwuwymiarowa: pierwszy wymiar to kolejne numery wykrytych
arytmii, drugi wymiar zawiera struktury z danymi wykrytych arytmii serca (dane do
porównania dla uczącej się sieci neuronowej)
arh_size – tablica z wielkością poszczególnych podtablic comp_results
nn_configuration_filename – ścieżka do pliku ze strukturą sieci neuronowej
-11-
ARH_ATTR_ITEM** arrhythmia_detection(unsigned char** sig,unsigned int
sig_size, QRS_ATTR* qrs_data, unsigned int qrs_size, char*
nn_configuration_filename)
Funkcja ta odpowiada za przeprowadzenie symulacji na sieci neuronowej, mającej na celu wykrycie
arytmii serca. Argumenty wejściowe są takie same jak w przypadku funkcji
arrhythmia_detection_learning, z tą różnicą, że nie podajemy danych do porównania.
nnarrhythmia_helpers.c
Plik zawierający funkcje pomocnicze dla implementacji z pliku nnarrhythmia.c.
unsigned char* signal2phase(unsigned char** sig, unsigned int sig_len, unsigned
int det_point, unsigned short channel_no);
Funkcja ma za zadanie utworzenie przestrzeni fazowej na bazie wejściowego sygnału EKG. Jako
parametry przekazujemy także długość sygnału (ilość jego próbek), punkt wykrycia zespołu QRS
oraz numer kanału, dla którego wykonywane są obliczenia.
unsigned int* generate_density_matrix(unsigned char* phase_space);
Funkcja ma za zadanie utworzenie tablicy gęstości na bazie przestrzeni fazowej.
fann_type* create_input_data(unsigned int** density_matrix,QRS_ATTR
qrs_info);
Funkcja odpowiada za utworzenie tablicy wejściowych danych do sieci neuronowej na podstawie
macierzy gęstości oraz informacji o wykrytych zespołach QRS.
ARH_ATTR_ITEM** fann_output2arrh(fann_type** fann_output,unsigned int
size,QRS_ATTR* qrs_data)
Funkcja odpowiadająca za przekształcenie wyjść sieci neuronowej w tablicę struktur wynikowych.
signal_loader.c
Plik zawiera funkcje odpowiedzialne za załadowanie sygnału EKG z pliku.
-12-
unsigned int load_signal(char* filename, unsigned char ***sig,unsigned int
channels_number,unsigned int *num)
Funkcja ma za zadanie otworzenie pliku z sygnałem, sprawdzenie jego rozmiaru i utworzenie
tablicy, która będzie przechowywała sygnał w pamięci programu, a następnie załadowanie danych z
pliku.
unsigned int load_signal_all_data(FILE* sig_file, unsigned int channels_number,
unsigned char *** ppSig, unsigned int *num)
Funkcja ładuje dane z otwartego pliku do pamięci.
arr_config.h
Plik konfiguracyjny biblioteki i programu. Zawiera podstawowe parametry wykorzystywane
wewnątrz funkcji:
CHANNELS_NUMBER 3 – liczba kanałów w sygnale EKG
SAMPLING 128 – próbkowanie sygnału EKG wyrażone w Hz
RESOLUTION 20 – rozdzielczość tablicy gęstości
INNER_TAB_START 5 – indeks początku tablicy zawierającej się wewnątrz tablicy
gęstości, która będzie wykorzystana do obliczeń
INNER_TAB_END 15 – indeks końca tablicy zawierającej się wewnątrz tablicy gęstości
PHASE_SPACE_LEN 40 – ilość próbek pobieranych od początku zespołu QRS, do
stworzenia przestrzeni fazowej; wyrażona w liczbie próbek
PHASE_SPACE_OFFSET 2 - przesunięcie sygnału używane do stworzenia przestrzeni
fazowej; wyrażone w liczbie próbek, powinno odpowiadać 7-15 ms.
10. DODATEK D. Spis zawartości dołączonych nośników (dyskietek, CD
ROMu)
BAZA – dane testowe, zawierające sygnały i prawidłowe wyniki
SRC – projekt środowiska programistycznego Eclipse
DOC - tekst raportu w postaci elektronicznej (MS WORD oraz PDF)