Przetwarzanie sygnałów w systemach diagnostyki medycznej. Określenie osi elektrycznej załamków, wyznaczenie sygnału oddechu z zapisu EKG.

Podobne dokumenty
AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie

Zastosowanie Informatyki w Medycynie

Podstawy elektrokardiografii część 1

3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA...10

AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie

SYMULATOR EKG. Bartłomiej Bielecki 1, Marek Zieliński 2, Paweł Mikołajaczak 1,3

Analiza i Przetwarzanie Biosygnałów

FIZJOLOGICZNE I PATOFIZJOLOGICZNE PODSTAWY INTERPRETACJI EKG. Aleksandra Jarecka

Zaburzenia przewodzenia śródkomorowego bloki wiązek Intraventricular comduction delay fascicular blocks

AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie

EKG (Elektrokardiogram zapis czasowych zmian potencjału mięśnia sercowego)

DIPOLOWY MODEL SERCA

AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie

Dodatek A Odprowadzenia i techniki rejestracji badania EKG. 178

II KATEDRA KARDIOLOGII CM UMK

Elektrokardiografia: podstawy i interpretacja

Automatyczna klasyfikacja zespołów QRS

1.ABSTRAKT REZULTATY I WNIOSKI PODSUMOWANIE LITERATURA...5 DODATEK C. OPIS INFORMATYCZNY PROCEDUR... 7

z zapisu EKG 1. WSTĘP CELE PROJEKTU KONCEPCJA PROPONOWANEGO ROZWIĄZANIA... 8

(L, S) I. Zagadnienia. 1. Potencjały czynnościowe komórek serca. 2. Pomiar EKG i jego interpretacja. 3. Fonokardiografia.

ZAŁOŻENIA ORGANIZACYJNO PROGRAMOWE

KWESTIONARIUSZ EKG INSTRUKcjE dla lekarzy OpISUjących WyNIKI badania EKG

OBRAZY WEKTOROWE W MAGNETOKARDIOGRAFII

Detekcja zespołów QRS w sygnale elektrokardiograficznym

Aby mieć możliwość przeglądania danych z 12 kanałów rejestrator powinien być ustawiony na 12-kanałowy tryb pracy. Dostępne tryby 12-kanałowe to:

MONITOROWANIE EKG, ZABURZENIA RYTMU SERCA RC (UK)

EKG w stanach nagłych. Dr hab. med. Marzenna Zielińska

CENTRUM KSZTA CENIA PODYPLOMOWEGO PIEL GNIAREK I PO O NYCH

II KATEDRA KARDIOLOGII CM UMK

Analiza zapisu elektrokardiograficznego

Elektrokardiografia dla informatyka-praktyka / Piotr Augustyniak. Kraków, Spis treści Słowo wstępne 5

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Rejestracja i analiza sygnału EKG

Część 1. Podstawowe pojęcia i zasady wykonania i oceny elektrokardiogramu

Fizjologia układu krążenia II. Dariusz Górko

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

SPIS TREŚCI. 1. Podstawy fizyczne elektrokardiografii Rejestracja elektrokardiogramu Ocena morfologiczna elektrokardiogramu...

1. ABSTRAKT REZULTATY I WNIOSKI PODSUMOWANIE LITERATURA DODATEK C: OPIS INFORMATYCZNY PROCEDUR...

ODRĘBNA KOMPRESJA WYŻSZYCH OKTAW ELEKTROKARDIOGRAMU

RAPORT KOŃCOWY 3. KONCEPCJA PROPONOWANEGO ROZWIĄZANIA DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA... 14

QT_DISP. AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie. WEAIiE, Katedra Automatyki Laboratorium Biocybernetyki

Dariusz Kozłowski, Krzysztof Łucki Klinika Kardiologii i Elektroterapii Serca, II Katedra Kardiologii, Gdański Uniwersytet Medyczny

Układ bodźcoprzewodzący

Interaktywne wykresy. Interaktywne histogramy. Analiza granicznych wartości w zapisie EKG. Pełne dostosowanie do indywidualnych potrzeb

DIAGNOSTYKA NIEINWAZYJNA I INWAZYJNA WRODZONYCH I NABYTYCH WAD SERCA U DZIECI

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Układy VLSI Bramki 1.0

10. Zmiany elektrokardiograficzne

Język C, tablice i funkcje (laboratorium, EE1-DI)

Częstoskurcze z wąskimi zespołami QRS zespoły preekscytacji Narrow QRS tachycardias preexcitation syndromes

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Laboratorium Komputerowe Systemy Pomiarowe

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H

AKADEMIA GÓRNICZO HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. Międzywydziałowa Szkoła Inżynierii Biomedycznej. Raport końcowy projektu

Częstoskurcze z szerokim zespołami QRS algorytm podstawowy Broad QRS complex tachycardia basic algorithm

Podstawy i języki programowania

Przedsionkowe zaburzenia rytmu

Przetwarzanie analogowo-cyfrowe sygnałów

P R Z E T W A R Z A N I E S Y G N A Ł Ó W B I O M E T R Y C Z N Y C H

Wstęp do Programowania, laboratorium 02

Krzywa EKG patologiczna- Gromadne ekstrasystole pochodzenia komorowego

lekcja 8a Gry komputerowe MasterMind

Dwiczenie laboratoryjne nr 9: ELEKTROKARDIOGRAFIA (EKG) A. ZAGADNIENIA DO PRZYGOTOWANIA

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

LABORATORIUM Sygnałów, Modulacji i Systemów ĆWICZENIE 2: Modulacje analogowe

Bierne układy różniczkujące i całkujące typu RC

CENTRUM KSZTAŁCENIA PODYPLOMOWEGO PIELĘGNIAREK I POŁOŻNYCH

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

ZESTAWIENIE PARAMETRÓW GRANICZNYCH (ODCINAJĄCYCH) system elektrokardiograficznych badań wysiłkowych - 1szt.

Detekcja zmienności rytmu serca

Aktywność elektryczna serca. Elektrokardiografia.

KATEDRA ELEKTRONIKI AGH WYDZIAŁ EAIIE. Dydaktyczny model 4-bitowego przetwornika C/A z siecią rezystorów o wartościach wagowych

Sygnały biomedyczne. Sygnały EKG

Język C, tablice i funkcje (laboratorium)

układu krążenia Paweł Piwowarczyk

Miejski Szpital Zespolony

Zadanie nr 2: Arytmetyka liczb zespolonych

Algorytm. a programowanie -

ECDL Advanced Moduł AM4 Arkusze kalkulacyjne Syllabus, wersja 2.0

Zad. 7: Sterowanie robotami mobilnymi w obecności przeszkód

PL B1. Układ do lokalizacji elektroakustycznych przetworników pomiarowych w przestrzeni pomieszczenia, zwłaszcza mikrofonów

Electronic Infosystems

Lab 9 Podstawy Programowania

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Nazwisko i imię: Zespół: Data: Ćwiczenie nr 9: Swobodne spadanie

Spis treści. Przedmowa... XI. Rozdział 1. Pomiar: jednostki miar Rozdział 2. Pomiar: liczby i obliczenia liczbowe... 16

Podstawy programowania

PROGRAM PRZYGOTOWANY PRZEZ ZESPÓŁ PROGRAMOWY W SKŁADZIE 1

Tom 6 Opis oprogramowania

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

Zad. 6: Sterowanie robotami mobilnymi w obecności przeszkód

CYFROWE PRZETWARZANIE SYGNAŁÓW

A61B 5/0492 ( ) A61B

Przypadki kliniczne EKG

Implementacja filtru Canny ego

Schemat blokowy karty

Zad. 6: Sterowanie robotem mobilnym

9. Podstawowe narzędzia matematyczne analiz przestrzennych

WOJEWÓDZKI KONKURS INFORMATYCZNY DLA UCZNIÓW DOTYCHCZASOWYCH GIMNAZJÓW ETAP SZKOLNY BIAŁYSTOK, 22 LISTOPADA 2017 R.

Transkrypt:

AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie WEAIiE, Katedra Automatyki Laboratorium Biocybernetyki Przedmiot: Przetwarzanie sygnałów w systemach diagnostyki medycznej. Temat projektu: Określenie osi elektrycznej załamków, wyznaczenie sygnału oddechu z zapisu EKG. Spis treści: ABSTRAKT... 2 WSTĘP... 2 KONCEPCJA PROPONOWANEGO ROZWIĄZANIA... 5 REZULTATY I WNIOSKI... 5 PODSUMOWANIE... 7 BIBLIOGRAFIA:... 7 DODATEK A: OPIS OPRACOWANYCH NARZĘDZI I METODY POSTĘPOWANIA... 7 DODATEK B: REALIZACJA PROPONOWANEGO ROZWIĄZANIA... 8 DODATEK C. OPIS INFORMATYCZNY PROCEDUR... 9 DODATEK D. SPIS ZAWARTOŚCI DOŁĄCZONYCH NOŚNIKÓW (DYSKIETEK, CD ROMU)... 11 Wykonali: Wojciech Zając, Piotr Szopa V rok IS konsultant: Dr hab. Inż. Piotr Augustyniak prof. nadzw. Wersja 1.0. Kraków, styczeo 2011. -1-

Abstrakt Celem projektu jest implementacja i przetestowanie algorytmu detekcji osi elektrycznej załamków oraz metody wyznaczenia sygnału oddechu z zapisu elektrokardiografu. W pracy przedstawiono podstawy fizjologii serca, wyjaśnienie zapisu EKG, metody wyznaczania osi elektrycznej serca oraz metody wyznaczania sygnału oddechowego na podstawie zapisu EKG Słowa kluczowe: oś elektryczna serca, zapis EKG, sygnał oddechu, odprowadzenia izoelektryczne Wstęp 1.1. Elektrokardiografia Elektrokardiografia to zapis diagnostyczny polegający na rejestracji elektrycznej czynności serca na powierzchni klatki piersiowej w postaci napięcia (różnicy potencjałów) między odpowiednimi dwoma elektrodami. Graficznie zapis EKG odczytujemy w formie krzywej elektrokardiograficznej na papierze milimetrowym lub na ekranie komputera. Podstawowym celem elektrokardiografii jest diagnostyka pracy serca na podstawie zaobserwowanych zjawisk elektrycznych. Zdolnośd komórek mięśniowych serca do spontanicznego przekazywania impulsów powoduje, że w skurczu biorą udział wszystkie zdolne do tego komórki. Ta synchronizacja powoduje, że poszczególne fazy skurczu serca są dużo wyraźniej reprezentowane przez zjawiska elektryczne niż ma to miejsce w jakimkolwiek innym przypadku sygnałów elektrodiagnostycznych. Rys. 1: Przykładowy elektrokardiogram *źródło: wikipedia+ Z diagnostycznego punktu widzenia, najistotniejsze są: -2-

Parametry czasowe, odzwierciedlające następujące po sobie zjawiska związane z pobudzeniem i relaksacją mięśnia sercowego Parametry morfologiczne, odpowiadające za miejsce powstanie impulsu pobudzającego i drogę jego przewodzenia Amplituda zarejestrowanego sygnału jest najmniej istotna gdyż na jej wartośd ma wpływ wiele pozasercowych czynników. Rozwój techniki i metod analizy cyfrowego sygnału doprowadziły do wyodrębnienia czterech głównych gałęzi elektrokardiografii: 12-odprowadzeniowe badanie EKG EKG wysiłkowe Stała 24-godzinna rejestracje metodą Holtera Wektokardiografia i elektrokardiografia wysokiej rozdzielczości 1.2. Budowa zapisu EKG Elektrokardiogram można podzielid na załamki, odcinki, odstępy. Załamkiem to odchylenie od linii izoelektrycznej. Zapis elektrokardiograficzny dzielimy na odcinki (np. odcinek QT). Przedziały czasowe pomiędzy poszczególnymi zdarzeniami w cyklu pracy serca to odstępy. Rys. 2: Schemat cyklu pracy serca Załamek P to wyniki depolaryzacji oraz skurczu przedsionka. Tak zwany zespół QRS odpowiada depolaryzacji mięśnia komór. Narastającą fala T odpowiada repolaryzacji komór. Czasami pojawia się załamek U (repolaryzacja przegrody). Pełne przejście przez te załamki oznacza cykl pracy serca. Liczba cykli na minutę stanowi tętno serca. -3-

Kształt krzywej EKG jest związany z budowa ciała, kształtem klatki piersiowej, rasą, płcią, zaburzeniami metabolicznymi, chorobami, spożytymi lekami, alkoholem itp. 1.3. Oś elektryczna serca Oś elektryczna serca jest prostą umiejscowiona w przestrzeni. Na prostej znajduje się wektor pola elektrycznego wytwarzanego przez depolaryzacje komór serca, w chwili osiągnięcia ich wartości maksymalnej. Określanie osi elektrycznej serca służy do umiejscowienia serca wewnątrz jamy ciała oraz określenia stosunku masy mięśniowej pomiędzy komora lewa i prawa. Określenie położenia osi elektrycznej jest istotne dla oceny poprawności badania EKG. Dzięki niej można wskazad np. czy przyczyna zmiany ukształtowania załamków jest odmienne ułożenie serca. Kąt pomiędzy wektorem wypadkowym a odprowadzeniem I należy do jednego z 4 przedziałów oznaczających kierunek osi elektrycznej serca: 0 o : 90 o normogram 90 o : 180 o prawogram Przerost prawej komory Blok tylnej wiązki lewej odnogi pęczka Hisa Wrodzone przesunięcie serca na prawą stronę klatki piersiowej 0 o : (-90 o ) lewogram Wartośd normalna, spotykana u osób o wysokim ustawieniu przepony, będących w ciąży lub otyłych (-90 o ) : (-180 o ) lewogram patologiczny Przerost lewej komory Blok przedniej wiązki lewej odnogi pęczka Hisa Ekotopowe pobudzenie i rytmy komorowe Oś elektryczną można określid badając cztery możliwe przypadki wychylenia zespołów QRS w odprowadzeniach I i avf (przedziały patologiczne można określid badając znak odprowadzenia II): +I, +avf normogram -I, +avf prawogram +I, -avf lewogram -I, -avf oś nieokreślona -4-

Koncepcja proponowanego rozwiązania Metoda określenia osi elektrycznej serca jest znana w Medycynie i polega na analizie odczytów z odprowadzeo kooczynowych w płaszczyźnie czołowej a dokładniej na badaniu orientacji zespołów QRS w tych odprowadzeniach. 1.4. Koncepcja wyznaczenia osi elektrycznej serca (na podstawie [3]): Wybór dwóch odprowadzeo kooczynowych o największej amplitudzie lub najmniejszym wpływie szumów. Obliczanie funkcji pierwiastka sumy kwadratów zespołów QRS obydwu odprowadzeo. Dopasowanie paraboli do otrzymanej funkcji. Wyznaczenie wartości maksimum paraboli dla poszczególnych odprowadzeo. Wyznaczenie wektora wypadkowego trzech odprowadzeo, z którego wynika kierunek osi elektrycznej serca. 1.5. Koncepcja wyznaczenia sygnału oddechu: Zmiana kierunku osi elektrycznej serca pozwala wyznaczyd sygnał oddechowy, w wyniku zmiany kształtu klatki piersiowej podczas wdechu/wydechu. Sygnał ten możemy obliczyd badając zmiany kąta który tworzy wektor wypadkowy zaczepiony w środku układu współrzędnych z tym układem. Wyznaczenie osi elektrycznej serca. Wyznaczenie x=arctg(y) gdzie y to tangens kąta tworzonego przez wektor (otrzymujemy zakłócony sygnał oddechowy). Wyznaczenie sygnału oddechu na podstawie wyników. Filtracja sygnału oddechu. 1.6. Alternatywna koncepcja wyznaczenia sygnału oddechu: Metoda wyznaczenia sygnału oddechu została opisana w artykule [1]. Pozwala ona na uzyskanie sygnału oddechu z pojedynczego odprowadzenia. Metoda rozpoczyna się od usunięcia zniekształcenia linii izoelektrycznej (baseline drift), która mogą wynikad m. in. z wahao temperatury. Można tego dokonad między innymi korzystając z transformaty falkowej oraz interpolacji co zostało opisane w dokumencie *2+. Zakładając iż znane nam jest umiejscowienie załamków R możemy przejśd do następnego kroku, którym jest obliczenie kurtozy z obszarów pomiędzy tymi załamkami. Uzyskane wartości są następnie interpolowane i ewentualnie filtrowane w efekcie czego otrzymujemy funkcję sygnału oddechu. Rezultaty i wnioski Program testowany był na zmodyfikowanych danych ze strony physionet.org z ręcznie wskazanymi załamkami QRS. Analizuje on 3 pierwsze odprowadzenia w standardowym 12-to odprowadzeniowym EKG. Częstotliwośd próbkowania dla danych wynosi 360 próbek/sekundę w zakresie 10mV. Dane wejściowe dla uproszczenia dalszych obliczeo i wizualizacji są skalowane i rzutowane na zbiór liczb całkowitych. -5-

Wygenerowana przez program wizualizacja danych wejściowych: Pierwsze trzy odprowadzenia dla 1500 próbek i zaznaczone liniami pionowymi przedziały QRS. Program poprawnie wykrywa oś serca i zwraca oraz wyświetla w innym oknie leżący na niej wektor wypadkowy. Wartośd współrzędnych wektora jest podana w liczbach całkowitych, lecz jej bezwzględna wielkośd nie ma znaczenia gdyż liczy się zależnośd pomiędzy obiema współrzędnymi dzięki, której można określid nachylenie osi serca. Współrzędne wektora są interpretowane jak w standardowym układzie współrzędnych kartezjaoskich: x rośnie im dalej na prawo od środka układu, y rośnie im wyżej od środka układu. Wygenerowana przez program wizualizacja osi serca: Wyświetlony jest wektor wypadkowy dla każdego zespołu QRS dla 1500 próbek i 5 zespołów. Zwrócone wartości: Wektor wypadkowy[x,y]: [360][-1506] Wektor wypadkowy[x,y]: [604][-1809] Wektor wypadkowy[x,y]: [529][-1939] Wektor wypadkowy[x,y]: [454][-1809] Wektor wypadkowy[x,y]: [488][-1592] Sygnał oddechu wyznaczony jest w oparciu o zmianę wyznaczonego przez wektor wypadkowy, kąta nachylenia osi serca (przyjmujemy że kąt 0 o oznacza wektor wskazujący wprost na prawo na wcześniej załączonym obrazie czyli o wartościach x>0, y=0) a także nieznacznie w oparciu o długośd wektora. -6-

Wygenerowana przez program wizualizacja sygnału oddechu dla 2000 próbek ok.5.5s. Sygnał oddechu jest generowany na podstawie odczytów z obszarów zespołów QRS, stąd jego względnie niska rozdzielczośd. Podsumowanie Praca jest implementacją metod opisanych w poprzednich częściach. Nie wykonano testów dla zbiorów danych przy użyciu innego oprogramowania tego typu ale wyniki zgadzają się z wnioskami wynikającymi z obserwacji sygnału. Głównym problemem w tworzeniu programu była koniecznośd porzucenia operacji na liczbach zmiennoprzecinkowych ze względu na dużą kumulację błędu podczas operacji na dużej ilości liczb. Bibliografia: *1+ Derivation of Respiratory Signal from Single-Channel ECGs Based on Source Statistics, Shuxue Dingab, Xin Zhua, Wenxi Chena, Daming Weia, International Journal of Bioelectromagnetism (Vol. 6, No. 1). *2+ Wavelet-Based Cascaded Adaptive Filter for Removing Baseline Drift in Pulse Waveforms, Lisheng Xu, David Zhang, Kuanquan Wang AGH 2001. *3+ Przetwarzanie sygnałów elektrodiagnostycznych, Piotr Augustyniak, Wydawnictwa DODATEK A: Opis opracowanych narzędzi i metody postępowania Program był pisany w języku C w standardzie ANSI z wykorzystaniem biblioteki OpenCV 1.0 dla wizualizacji wyników. Środowiskiem tworzenia aplikacji był pakiet NetBeans IDE 6.9.1 z narzędziami Cygwin do kompilacji. Pliki binarne znajdują się w folderze /bin. -7-

Program uruchamia się następującą komendą: p_sygn.exe [plik wejściowy z odprowadzeniami] [plik z indeksami zespołów QRS] Po uruchomieniu otwierają się cztery okna: Terminal z wartościami liczbowymi. Okno z sygnałem. Okno z prezentacją wektorów wypadkowych. Okno z wizualizacją sygnału oddechu. DODATEK B: Realizacja proponowanego rozwiązania Program był kompilowany i testowany w systemie Windows 7 64-bit. Korzysta z plików binarnych biblioteki OpenCV w wersji 1.0, w szczególności z modułu HighGUI do wyświetlania wyników. Napisany jest w całości w języku C. Przeszkodę w tworzeniu projektu stanowił brak odpowiednich danych wejściowych i imlpementacji referencyjnej do sprawdzania poprawności wyników. W przypadku operacji na liczbach zmiennoprzecinkowych typ danych float nie był w stanie pomieścid sumy dużej ilości próbek dla wyznaczenia najlepszych dwóch odprowadzeo. Typ double był lepszy ale ostatecznie postanowiliśmy rzutowad wszystko na zbiór liczb całkowitych po odpowiednim przeskalowaniu, gdyż znacznie ułatwiało to współpracę z biblioteką OpenCV. Folder zawiera przykładowe pliki wejściowe input.txt i odpowiadający mu qrs.txt. Są to odczyty z bazy MIT-BIH Arrhythmia Database i przypisane im zespoły QRS. Pliki dll wymagane do uruchomienia: cxcore100.dll cv100.dll highgui100.dll cygwin1.dll libguide40.dll -8-

DODATEK C. Opis informatyczny procedur Projekt składa się z trzech plików źródłowych: main.c główny plik funct.h nagłówek dla funkcji funct.c plik ze źródłami wykorzystywanych funkcji: Makrodefinicje long int max_amp(int tab[], int limit); - funkcja zwracająca średnią wartośd amplitudy potrzebną do określenia najlepszych odprowadzeo. int* sum_sqr(int tab[][limit], int qrs[][qrs_limit], int qrs_limit, int channel1, int channel2); - funkcja znajdująca maksimum paraboli dopasowanej do zespołów QRS w oparciu o funkcję pseudomodułu. void visualize(int tab[][limit], int qrs[][qrs_limit], int tab_limit, int qrs_limit, int* max); - funkcja wyświetlająca sygnały w pierwszych trzech odprowadzeniach. void show_vector(int **tab, int limit); - funkcja wyświetlająca umiejscowienie wektora wypadkowego. void get_and_show_r_signal(int **tab, int limit); - funkcja obliczająca i wyświetlająca sygnał oddechu. LIMIT maksymalna ilośd próbek wczytanych z pliku (dla input.txt <=4000). QRS_LIMIT - maksymalna ilośd zespołów QRS wczytanych z pliku. Kluczowe elementy kodu: main.c qrs_max = sum_sqr(conv, QRS1, qrs_count, i_max1, i_max2); // przedziały gdzie parabola ma największą wartość if(qrs_max!= NULL) //angle = (double*)malloc(qrs_count * sizeof(double)); sum = (int**)malloc(qrs_count * sizeof(int*)); for(i=0; i<qrs_count; i++) sum[i] = (int*)malloc(2 * sizeof(int)); for(i=0; i<qrs_count; i++) printf("max paraboli: %d\n", qrs_max[i]); for(i=0; i<qrs_count; i++) // oblicznie wektorów z wartości funkcji trygonometrycznych vector1[0] = conv[0][qrs_max[i]]; -9-

vector2[0] = 0.5 * conv[1][qrs_max[i]]; vector3[0] = -0.5 * conv[2][qrs_max[i]]; vector1[1] = 0; vector2[1] = -sqrt(3)/2 * conv[1][qrs_max[i]]; vector3[1] = -sqrt(3)/2 * conv[2][qrs_max[i]]; vector3[0]); vector3[1]); sum[i][1]); //oblicznie wektora wypadkowego sum[i][0] = (int)(vector1[0] + vector2[0] + sum[i][1] = (int)(vector1[1] + vector2[1] + printf("wektor wypadkowy[x,y]: [%d][%d]\n", sum[i][0], ----------------------------------------------------------------- funct.c long int max_amp(int tab[], int limit) int i; long int sum = 0; for(i=0; i<limit; i++) sum += abs(tab[i]) + tab[i]; // metoda ustalania największej amplitudy return sum/limit; int* sum_sqr(int tab[][limit], int qrs[][qrs_limit], int qrs_limit, int channel1, int channel2) int i, j, k, max, *i_max; long int sum; i_max = (int*)malloc(qrs_limit * sizeof(int)); for(i=0; i<qrs_limit; i++) i_max[i] = 0; for(i=0; i<qrs_limit; i++) max = 0; for(j=qrs[0][i]; j<qrs[2][i]-6; j+=2) sum = 0; for(k=0; k<6; k++) sum += tab[channel1][j+k] * tab[channel1][j+k] + tab[channel2][j+k] * tab[channel2][j+k]; if(sum > max) //odpowiednik dopasowania paraboli max = sum; i_max[i] = j+3; -10-

return i_max; DODATEK D. Spis zawartości dołączonych nośników (dyskietek, CD ROMu) Bin o program wykonywalny o wymagane do uruchomienia biblioteki o plik wejściowy z odprowadzeniami o plik z indeksami zespołów QRS Doc o Raport w formacie DOC i PDF o Prezentacja w formacie PPT i PDF Src o Pliki nagłówkowe o Pliki źródłowe o Makefile -11-