Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks...

46
TARTU ÜLIKOOL Füüsika- keemiateaduskond Eksperimentaalfüüsika ja tehnoloogia instituut Raivo Alla Südametekkeliste signaalide periood kui pidev muutuja BAKALAUREUSETÖÖ Juhendaja : ins Peeter Loog TARTU 2005

Transcript of Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks...

Page 1: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

TARTU ÜLIKOOL

Füüsika- keemiateaduskond Eksperimentaalfüüsika ja tehnoloogia instituut

Raivo Alla

Südametekkeliste signaalide periood kui pidev muutuja

BAKALAUREUSETÖÖ

Juhendaja : ins Peeter Loog

TARTU 2005

Page 2: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

2

SISUKORD

1 SISSEJUHATUS .................................................................................................... 4

2 EKG ANALÜÜSI MEETODEID ......................................................................... 5

2.1 EKG puhul uuritavad parameetrid. Keskmine lainekuju. ....................... 5

2.2 Keskmine lainekuju Foucault’ kardiograafias. ........................................ 6

2.3 Südametsükli faasi mõistest. ........................................................................ 9

3 MEETODID JA TARKVARA. ............................................................................ 11

3.1 Programmeerimisvahend Matlab. ............................................................... 11

3.2 QRS-kompleksi, P-saki ja T-saki detekteerimine EKG-st. ....................... 11

3.3 Kasutatud detektorprogrammi tööpõhimõte. ........................................... 12

4 REALISEERIMINE. .......................................................................................... 15

4.1 Kasutatud katseandmed. .............................................................................. 15

4.2 PP-,RR- ja TT-perioodid. ............................................................................. 15

4.3 Südametsükli faasi leidmine. ........................................................................ 18

4.4 Keskmise lainekuju moodustamine EKG signaalist. ................................. 18

4.4.1 Olemasolev ajapõhine meetod. ............................................................... 18

4.4.2 Faasipõhine keskmistamine. FiiA meetod. ............................................. 19

4.4.3 Faasipõhine keskmistamine. FiiB meetod. ............................................. 20

4.4.4 Veel üks keskmistamise võimalus – fiiB2. ............................................. 21

4.4.5 Meetodite võrdlus. .................................................................................. 22

4.5 Südame löögisagedus kui pidev funktsioon. .............................................. 25

5 TULEMUSTE ANALÜÜS ................................................................................... 27

6 KOKKUVÕTE ...................................................................................................... 28

7 SUMMARY ........................................................................................................... 29

8 KASUTATUD KIRJANDUSE LOETELU ........................................................ 30

9 LISAD. ................................................................................................................... 31

9.1 PP-,RR-ja TT perioodid (graafikud) ........................................................ 31

9.2 Keskmistatud lainekuju fiiA2 meetodil (graafikud) ................................. 32

9.3 Keskmistatud lainekuju fiiB meetodil (graafikud) .................................. 33

9.4 Dispersioonid (graafikud) ........................................................................... 34

9.5 Südame löögisagedus kui pidev funktsioon (graafikud) .......................... 36

9.6 Kolme löögisageduse ühine (graafikud) ..................................................... 38

Page 3: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

3

9.7 Programmide tekstid. .................................................................................... 39

9.7.1 Programm ecg.m ................................................................................. 39

9.7.2 Programm H50z.m .............................................................................. 40

9.7.3 Programm per.m ................................................................................. 40

9.7.4 Programm Iluspilt.m ........................................................................... 40

9.7.5 Programm kolmest.m........................................................................... 41

9.7.6 Programm fiiA2.m .............................................................................. 41

9.7.7 Programm fiiB.m ................................................................................ 43

9.7.8 Programm otsi.m ................................................................................. 45

9.7.9 Programm ymarda.m ........................................................................... 45

9.7.10 Programm ave.m .................................................................................. 45

9.7.11 Programm disper.m .............................................................................. 46

Page 4: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

4

1. SISSEJUHATUS

Süda töötab tsükliliselt, perioodiliselt . See tsüklilisus kajastub kõigis südame tööga

kaasnevates ehk kardiograafilistes signaalides – elektrokardiogramm (EKG),

fonokardiogramm (FKG), sfügmogramm (SKG) jpm. Nende signaalide jälgimisel tekib

kõigepealt vajadus hinnata südame löögisagedust, mille mõõduks on südamelöökide arv ühes

minutis. Otsene „pulsside “ loendamine minuti jooksul annab meile minuti keskmise, samuti

saame leida keskmise sageduse 30 või 15 perioodiks kulunud ajal.

Isegi ühekaupa mõõdetud perioodide põhjal saame ikkagi keskmise sageduse perioodi kohta,

mis avaldub diskreetselt määratud signaalina. Tänapäeval kasutataksegi viimast vereringe

dünaamika uurimisel.

Tavapäraselt mõõdetakse südametsükli perioodi RR-intervalliga, s.o. EKG kahe järjestikuse

R-saki vahelise ajaga. Kuid analoogselt saaksime ka PP-või TT-intervallidele vastavad

perioodid, samuti on leitavad perioodid „toonide“ põhjal FKG-lt või mistahes

südametekkelisest signaalist omavahelises vastavuses olevate naabertsüklite punktide järgi.

Seega võime saada ühe ja sama südametsükli jaoks õige mitu erinevat perioodi ning samuti

sageduse väärtust, kuna nende perioodide algused ja lõpud ei kattu.

Dotsent Jüri Vedru ja ins. Peeter Loogi poolt esitatud idee kohaselt võiks

südametekkeliste signaalide perioode ja sagedusi käsitleda pidevatena.

Käesolev töö seabki eesmärgiks vaadelda EKG-d kui pidevalt muutuva perioodiga signaali,

et rakendada seda ideed ka Foucault’ kardiograafia vallas.

Matemaatilised valemid ja teoreetiline taust pidevalt muutuva perioodiga EKG signaali

faasimuutuja määramiseks on sündinud privaatkonsultatsioonist dotsent Jüri Vedruga.

Valemite realiseerimise algoritmid on kirjutatud programmeerimiskeskkonnas MATLAB,

vajaminevate programmide tekstid on lisades (Lisa 9.7).

Page 5: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

5

2. EKG ANALÜÜSI MEETODEID.

2.1 EKG puhul uuritavad parameetrid. Keskmine lainekuju.

EKG kujutab endast keha pinnalt registreeritud elektripotentsiaalide muutusi, mille

pōhjustajaks on polarisatsiooniprotsessid südamelihases. Südame löögisageduse ja

kontraktsioonitugevuse määravad väga mitmed südameregulatsiooni protsessid [1].

Nii mōnelegi küsimusele viimaste kohta annab vastuse EKG analüüs.

Põhimõtteliselt jagunevad EKG analüüsimeetodid kahte gruppi: need, mis tegelevad

signaaliga ajaesituses ja need, mis analüüsivad signaali, lähtudes selle spektrist.

Ajaesituses tegeldakse mitmesuguste intervallide nagu QT ja PR ning perioodide (nt. RR)

mõõtmisega. Lisaks kasutatakse mitmesuguseid statistilisi näitajaid nagu standardhälve ja

korrelatsioonimaatriksid.

EKG spektri abil saab vaadelda signaali erinevate sageduskomponentide kaupa ,

avastada ja kõrvaldada müra, leida signaali võimsust. Viimasel ajal on spektraalanalüüsi

meetodid keerukustunud seoses fraktaalanalüüsi ja mittelineaarsel dünaamikal põhinevate

meetodite ilmumisega [2].

Ka on uuritud ja töötatud välja rakendusi, võimaldamaks saada mingi aja jooksul mõõdetud

EKG-st nn. iseloomulikku signaalikuju, st. teatud mõttes keskmistatud, esinduslikku

südametsüklit. Selline „näidissüdametsükkel“ annab arstidele ülevaatliku pildi patsiendi

seisundist (ehkki täpsemal diagnoosimisel tuleb siiski kasutada kogu salvestust), ühtlasi on

saadud südametsüklis vähenenud ka juhusliku iseloomuga müra.

Et see südametsükkel aga oleks võimalikult täpselt keskmistatud, tuleks EKG

kvaasiperioodilisuse tõttu kasutada erivõtteid.

Iga südametsükli puhul on keskmistamise puhul oluline teada, millisele „keskmise“

signaalikuju punktidele vastavad antud südametsükli punktid. Ehk teisiti: meil on vaja

matemaatiliselt esitada mingi vastavus erinevate südametsüklite vahel, seda protsessi

nimetatakse ka südametsüklite sünkroniseerimiseks mingite sünkropunktide järgi.Kui selguks,

et EKG signaali võib vaadelda ka kui ühe südametsükli raames muutuva perioodiga signaali,

on meil võimalik koostada teistsugune matemaatiline mudel taoliseks sünkroniseerimiseks.

Järgnev alapeatükk tutvustab kirjeldatud südametsüklite keskmistamise praktilist vajadust

Foucault’ kardiograafias.

Page 6: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

6

2.2 Keskmine lainekuju Foucault’ kardiograafias.

Tartu biomeditsiinifüüsikute poolt alates 1960-ndatest arendatud Foucault’ kardiograafia on

tõestamas oma aktuaalsust südametegevuse uurimisel. Meetodi põhimõte seisneb

kõrgsagedusliku magnetvälja poolt indutseeritud pöörisvoolude energia absorbeerumise

mõõtmises südamepiirkonnas. Üheks probleemiks on FKG (Foucault’ kardiogrammi)

korrektse ansamblikeskmise lainekuju leidmine [3]. Keskmistamisprotsess seisneb selles, et

samaaegselt kulgevast EKG signaalist saadud R-saki haripunktid on sünkropunktideks

vastavate FKG signaali tsüklite keskmistamisel. FKG tsüklid piltlikult „laotakse“ üksteise

peale ja arvutatakse iga ajahetke kohta keskmine signaali väärtus (vt. joonis 1).

Joonis 1: FKG signaali keskmistamisprotsess. (dots. J.Vedru ettekandest)

Selgus aga, et kui moodustada leitud (keskmistatud) lainest perioodiline signaal, lisades antud

laineid üksteise otsa, tekib lainete ülemineku kohal katkevuskoht (vt. joonis 2).

Ebatäpsus tuleneb siin sellest, et FKG lainekuju keskmistatakse ainult ühe sünkropunkti järgi,

milleks on R-saki tipp (joonisel 2 tähistatud vertikaalse joonena, mis kannab ajalist infot).

Keskmistamine toimub sünkropunktist nii vasakus kui paremas suunas kogusignaalist

detekteeritud maksimaalsele südametsükli perioodile vastava aja ulatuses.

Kuna südametsüklid võivad olla üsna varieeruva pikkusega, tähendab see seda, et tulemuse

usaldatavus langeb saadud lainekuju äärealadel.

Page 7: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

7

σTsys

Joonis 2: FKG ansamblikeskmistamise probleem (dots. J.Vedru ettekandest)

Tähistades määramatuse u(t), saab keskmistatud lainekuju ulatuses hinnata u(t) väärtust

(joonis 3).

Joonis 3: keskmistatud lainekuju määramatusefunktsioon u(t ). [3, lk. 2]

Ajahetkel t = 0, kus asub R-tippude järgi seatud sünkropunkt, on määramatus võrdne nulliga

ning ajahetkedel ja - võrdne .

tähistab siin südametsükli perioodi keskväärtust üle kogu signaali ning südametsükli

perioodi väärtuste standardhälvet. Määramatuse kohal saame leida Karpmani valemist

[2, lk.2] , see võrdub väärtusega.

Määramatuse vasak ja parem haru ( ja ) abil koostatakse kaalufunktsioonid, mis

võimaldavad arvutada kaalutud lainekuju (joonis 4).

Page 8: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

8

Joonis 4: kaalufunktsiooni abil moodustatud kaalutud lainekuju (dots. J.Vedru ettekandest)

Tulemus aga võiks olla parem kui me oskaksime kuidagi keskmistada väiksema või siis

sünkropunkti suhtes sümmeetrilise määramatusefunktsiooniga u(t).

Siit järeldub, et on tarvis mingit vastavust erinevate südametsüklite punktide vahel.

2.3 Südametsükli faasi mõistest.

Kui südametsükleid vaadelda üksikutena, siis tsükli aja e. perioodi möödudes tekib olukord,

kus üks tsükkel lõpeb ja teine algab. Siinjuures peame teadma, mida me loeme alguseks ja

mida lõpuks. Kuid mingil juhul pole lubatud, et eelmine tsükkel on lõppenud ja uus pole

alanud, ning vastupidi - tsüklid ei kattu.

Võime lugeda tsükli algfaasi nulliks ning lõppfaasi üheks (üks tsükkel on toimunud), siis

tsükli jooksul läbib faas nende vahepealsed väärtused ja üldlevinult kirjeldatakse seda

graafiliselt saehambakujukisena (joonis 8).

Joonis 8: traditsiooniline

südametsükli faasi

muutumine ajas.

(dots. J.Vedru ettekandest)

Page 9: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

9

Konkreetse saehamba laius oleneb vastava tsükli pikkusest, kuid faasi muutumispiirkond on

ikka [0..1]. Graafikult on näha, et faas muutub ühe tsükli piires lineaarselt, mis tähendab

seda , et antud juhul käsitletakse EKG signaali südametsüklite varieerumist lihtsustatult kui

nende ühtlast „kokkupressimist“ või „laialimäärimist“.

Ometi on teada, et näiteks süstoli kestus varieerub võrreldes terve südametsükli perioodiga

suhteliselt vähem, mis viitab perioodi muutumisvõimele igal ajahetkel. Tsükli kestel muutuv

periood T(t) on aluseks teistsugusele käsitlusele ajas muutuva faasi arvutamisel.

Allpool on esitatud matemaatiline tuletuskäik, mis viib taolise faasiarvutuse valemini.

Ajas muutuv faas on määratud valemiga:

1

( )

dC

dt T t

ϕ= ⋅ , kus C on konstant. Edasi saame:

( )

Cd dt

T tϕ = , millest mõlemaid pooli

integreerides saame faasi arvutamise üldise valemi T(t) korral: 0

1

( )

t

C dtT t

ϕ = ⋅ ∫

Siit edasi on meil kaks võimalust:

Variant A: kõik tsüklid algavad faasiga (0) 0ϕ = ja lõpevad sama faasiga ehk siis alati

( ) 1itϕ = . Iga südametsükli alguse ajahetk on siin nullitud ja tsükli lõpp, ühtlasi tsükli pikkus

t i = lg ( ) lg ( 1)( ) ( )a us i a us it P t P −− .

See on üldine võimalus pidevalt muutuva perioodiga signaalide puhul.

Variant B: kõik tsüklid algavad faasiga (0) 0ϕ = , kuid lõpevad süstolis sama faasiga

.( ) 1ES itϕ = ning diastolis faas muutub ühest suuremaks ja kulgeb igal südametsüklil

erinevalt.

Eelis võrreldes eelmise variandiga tuleb siin sellest, et süstoli pikkus püsib võrreldes kogu

südametsükli pikkusega stabiilsemana ja võtab arvesse kõige inforikkamat osa signaalist:

peale T-sakki kujutab diastol endast peamiselt vaid isoelektrilist joont.

Variant A korral saame kirjutada

Variant B korral

Faasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes

järgmised kaks valemit:

. 11

( )0

tes iC d

τ= ⋅ ∫

11

( )0

tiC d

τ= ⋅ ∫

Page 10: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

10

Edasiseks ülesandeks on tarvis rakendada antud valemid faasiarvutuseks MATLAB-is ja

kontrollida, kas sellisel viisil on võimalik keskmist lainekuju korrektsemalt leida

(vt. alaptk. 4.4).

t 1

T( )0=A ti 1

T( )0

d

d

ττ

ϕ

ττ

1

( )0

1

( )0

td

T

B tesid

T

ττ

ϕ

ττ

=

Page 11: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

11

3. MEETODID JA TARKVARA.

3.1 Programmeerimisvahend MATLAB.

Katseandmete visualiseerimiseks ja arvutuste tegemiseks sai käesolevas töös kasutatud firma

Mathworks poolt arendatud kommertsprogrammi MATLAB (Matrix Laboratory), mis on

kasutatav nii PC, Mac kui ka VAX arhitektuuridel.

MATLAB on vektor-ja maatriksarvutusprogramm, mis võimaldab sooritada mahukaid

arvutusülesandeid, mida võib ette tulla nt. heli-,pildi,-videotöötluses ja teaduslikes

arvutustöödes. Suures osas on vajaminevad algoritmid programselt sisse ehitatud või saadaval

eraldi pakettidena, lisaks on võimalik ise defineerida funktsioone, mida hiljem kasutada.

3.2 QRS-kompleksi, P-saki ja T-saki detekteerimine EKG-st.

Et hinnanguliselt aimu saada tulemuste usaldusväärsusest, on alljärgnevalt esitatud

ülevaade EKG signaali tunnuspunktide leidmise metoodikast.

QRS kompleksi detekteerimist saab teha nii salvestatud andmete põhjal kui ka jooksvalt

reaalajas. Algoritme on erinevaid, nt. Pan-Tomkinsi, Gritzali algoritm.

Korrektne QRS detekteerimine on keerukas järgmistel põhjustel:[4, lk. 1]

• individuaalne füsioloogiline varieerumine suurtes piirides

• mitmesugune müra, mis segab (lihastegevusest põhjustatud müra, elektroodide

liikumisest põhjustatud müra, interferents elektriliini müraga)

• QRS kompleks kõrgsageduslik osa on suhteliselt lähedane T-laine

kõrgsagedusspektriga.

P-laine tipu määratlemine signaalis on suhteliselt keerukam QRS-i fikseerimisest .

Üldiselt tehakse seda amplituudi järgi, kui on juba välja filtreeritud kõrgsageduslik müra ja

vastava südametsükli QRS kompleks leitud. Teatud lävipinge ületamisel vaadeldakse vastavat

kohta signaalis kui võimalikku potentsiaalset P-laine olemasolu.[5, lk. 3].

Ka T-saki tipu detekteerimiseks kasutatakse lävipinge meetodit:

näiteks otsitakse südametsüklite kaupa mingis tõenäolises piirkonnas lokaalset maksimumi,

mis peab ületama etteantud läviväärtust.

Kõige levinum P,T,QRS detekteerimismeetod kasutab ära nimetatud lainete morfoloogilisi

erinevusi, esmajoones signaali tõusu (nt. QRS-kompleksil on signaali tõus kõige järsem).

Page 12: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

12

Ka siinkasutatud programm ecg.m (Lisa 9.7.1) kasutab R- ja T-saki eristamiseks signaali

tõusu. Programm ecg.m tuvastab küllalt täpselt P-saki tipu (tähistatud Pm), QRS-kompleksi

R-saki tipu (tähistatud Rm) ja T-saki tipu (tähistatud Tm). Kuna P-saki algus, QRS-

kompleksi algus ja T-saki algus (tähistatud vastavalt Pa,Qa,Ta) on enamasti üldse väga täpselt

raskelt leitavad, siis ka siin esineb kohati ebatäpsusi.. Programmi tekst on häälestatud

kasutatud katseandmetele. Eelnevalt ja antud töö raames läbi viidud arvukate testimiste

tagajärjel ei esinenud lõppkokkuvõttes vähemalt

P-,R- ja T-saki tippude määramisel märgatavaid visuaalseid anomaaliaid.

3.3 Programmi ecg.m tööpõhimõte.

Esialgsetest katseandmetest filtreeritakse välja 50Hz müra (elektrivõrgu häire).

Kontrollitakse signaali langust põhimõttel ekg(t+N)-ekg(t)

ja luuakse vastav differentssignaal. (N on varieeritav konstant, muudetakse vastavalt sellele,

üle mitme lugemi soovitakse differentse võtta).

Joonis 5: Maksimaalsete languste leidmine. (programmi ecg.m väljund)

Page 13: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

13

Luuakse uus vahesignaal (joonisel 5 paiguti nulltasemest negatiivsusesse hüppav signaal), kus

nullitakse teatud R-sakile iseloomulikule langusele mittevastav osa signaalist.

Kogu nullist erinevas lokaalses piirkonnas leitakse miinimumväärtus (joonise 5 allosas

tähistatud tärnidega). EKG-signaali R-saki tippe hakatakse otsima tärnidega tähistatud

vahesignaali miinimumpunktidest ajalises mõttes tahapoole jäävast alast.

Sarnaselt leitakse QRS-kompleksi R-tipust paremale jääv S-laine miinimumväärtus Smin ja R-

tipust vasakule jääv Q-laine algus Qa.

P-saki ja T-saki tippude leidmine on analoogne – maksimumide leidmine mingis alas.

Programmi tulemusel joonistatakse graafik (joonis 6), mille alumine osa piltlikustab juba

eespool kirjeldatud maksimaalsete languste tuvastamist ja ülemine osa detekteerimise

tulemust (P,R,T-sakkide tipud ja Smin väärtused on südametsüklite kaupa joonega ühendatud).

Kuna hingamissignaali pole EKG-st eraldatud, siis on EKG signaal hingamissignaaliga

moduleeritud (graafikul näha R-tippude amplituudi lainekuju järgi).

Joonis 6: Programmi ecg.m tulemusena joonistatud graafik

Page 14: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

14

Joonis 7: Ecg.m detektori tulemus kahe südametsükli lõikes. Katsefail at1.

Joonisel 7 on lähemalt näha detektorprogrammi poolt määratud tunnuspunktid EKG-

signaalis. On näha, et nii P-saki kui ka T-saki alguse määramiseks on kasutatud kahte

erinevat meetodit ja õigemaks on loetud eespool asetsev punkt, millele on ring ümber

joonistatud. Punktid on asetatud tagasi EKG originaalsignaali graafikule, milles on

esindatud ka 50Hz võrgusagedusmüra (sellest võib tunduda kohati mõningane

ebaloogilisus punktide asendis).

Page 15: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

15

4. REALISEERIMINE

4.1 Kasutatud katseandmed.

Teostatud arvutuste käigus sai kasutatud 6-liikmelise rühma (dots. Jüri Vedru

koordineerimisel) poolt salvestatud katsetulemusi. Analüüsitavaid katsefaile oli 27 .

Tekstifailid sisaldasid endas veergudesse jaotatuna aega,EKG,FCG,fonokardiogrammi,

kaelaarterist mõõdetud vererõhu ja hingamissignaali andmeid. Diskreetimissagedus

lugemite võtmisel oli 250Hz, katsete kestus polnud konstantne (keskmiselt 2-3 minutit).

Katsete sooritamine oli dokumenteeritud, seejuures nimetati katsefailid vastavalt

järgmistele soorituspōhimōtetele:

Katse läbiviimisprintsiip Faili nimed

1) Pikaliasend vaba hingamisega. Hingamine vaba ja mitte sügav

at1, jv1, gs1, kv1, ot1, nt1

2) Pikali asend määratud viisil hingamisega. Hingamine:10s vabalt, 30s hingamispeetust keskseisus, 30s taastumist, 30s kasvava sügavusega hingamist , 20s vabalt

at2, jv2, gs2, kv2, ot2, nt2

3) Püstiasend vaba hingamisega. At3, jv3, gs3, kv3, ot3, nt3

4) Püstiasend määratud viisil hingamisega. Soorituspōhimōte sama mis 2-s punktis.

At4, jv4, gs4, kv4, ot4, nt4

Katsefailid at5, at6, at7 on antud kategooriate välised andmed.

4.2 PP-,RR- ja TT-perioodid.

Meil on kasutada detektorprogrammi ecg.m abil leitud P-,R- ja T-saki tipupunktid,

millede järgi saame leida erinevaid perioode lihtsal põhimõttel PP(i) = Pm(i) - Pm(i-1),

RR(i) = Rm(i) - Rm(i-1) ja TT(i) = Tm(i) - Tm(i-1).

Saadud PP,RR,TT väärtused saame asetada ajateljele järgnevuses PP(i),RR(i),TT(i)

punktidena, kusjuures t(PP(i)) = t(Pm(i)) jne.

Page 16: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

16

Järgmiseks interpoleerime saadud perioodi väärtused üle kogu EKG signaali, kasutades

selleks MATLABi spline funktsiooni. Saadud pidev perioodifunktsioon on aluseks

südametsükli faasi arvutamisel.

Järgnev graafik (joonis 9) on joonistatud katseandmefaili at1 põhjal. Tulpdiagramm

tähistab siin RR-perioodi väärtuseid ja vastavad punktide kolmiku keskmisele punktile.

Esimene punkt tähistab PP-perioodi väärtuseid ja kolmas punkt TT-perioodi väärtuseid.

Kuna tulemused kirjeldavad mingil määral perioodi muutumist signaali jooksul ja on

seetõttu olulised, siis on tulemuste mõningad graafikud näha ka lisades (Lisa 9.2).

Joonis 9:

PP,RR,TT perioodid

Katsefail at1.

(programmi per.m väljund)

Saadud tulemuste põhjal saab teha ka ettevaatliku järelduse, et kindlat, süsteemset

korrapära pideva perioodi muutumises ei ole. Lihtne statistiline analüüs näib andvat

sellele kinnitust. Järgneval joonisel 10 on näha katseandmete põhjal tehtud statistikale

tüüpiline pilt, mis lühidalt näitab seda, et PP,RR ja TT perioodid ei moodusta ühtlaste

vahedega paigutatud „punktikesi“ pideval joonel, vaid on lisaks sellele ka justkui

sihipäratult koondunud RR-perioodi väärtuste ümber.

Page 17: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

17

Joonis 10: statistiline analüüs (perioodide differentsid ja standardhälve) PP,RR ja TT

perioodidest katseandmete failist at1. (programmi per.m väljund)

Joonise üleval vasakul on kujutatud RR-perioodide muutumisi RR(i) – RR(i-1), seejuures

keskmine muut mean(RR(i) – RR(i-1)) on tähistatud horisontaaljoonega ja võrdub

0.0454s. Ülemine paremal olev pilt ja all olev pilt on väga sarnased, kuid ülemine

kirjeldab standardhälvet keskväärtusest, alumine aga hälvet RR-perioodi väärtusest

(vt. joonis 11). Joonise 10 standardhälbe graafiku horisontaaljoon tähistab standardhälbe

keskmist väärtust 0.0058s, alumise graafiku horisontaaljoon aga vastavate differentside

keskmist 0.0061s. Selle teadmise taustal, et südame löögisageduse muutumisel varieerub

suuremas ulatuses just diastol ning süstoli kestus püsib stabiilsemana, ei tundu asjaolul, et

RR-perioodide keskmine differents on suurusjärgu võrra erinev keskmisest TT(i) – RR(i)

ja RR(i) – PP(i) väärtustest. Joonistel 9 ja 10 näha oleva tulemuse saab

lisades toodud programmi per.m abil (Lisa 9.7.3).

Joonis 11: hälbe RR-perioodi väärtusest leidmine

Page 18: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

18

4.3 Südametsükli faasi leidmine.

Südametsükli faasi leidmine alapeatükis 2.3 esitatud valemite Aϕ ja Bϕ abil andis joonisel

12 näha oleva tulemuse.

Joonis 12: faas Aϕ (vasakul) ja Bϕ (paremal). Katse at1, vasak graafik programmi fiiA2.m

väljund ja parem fiiB.m väljund (programmid vastavalt lisades 9.7.6 ja 9.7.7).

Faasi muutumine on seejuures (küll vähemärgatavalt) mittelineaarne. Leitud faaside järgi saab

koostada vastavuse ( ) ( )i i i iy t y ϕ→ , ehk siis minna EKG signaali ajaesituselt üle

faasiesitusele ja keskmistada siis juba vastavalt samas faasis, mitte samal ajahetkel olevaid

signaalipunkte.

4.4 Keskmise lainekuju moodustamine EKG signaalist.

Eelnevalt esitatud valemite abil saab üle kogu EKG signaali arvutada vastavad

Aϕ ja Bϕ väärtused, mis on aluseks keskmise lainekuju leidmisel. Kuna visuaalseid erinevusi

ja ebakohti on EKG-lt kergem leida kui Foucault’ kardiogrammilt, siis sai programmi

tulemusi analüüsitud EKG keskmistamise näitel.

Seejuures tuleb aru anda, et antud juhul pole EKG „puhas“ : hingamisest tingitud „lainetust“

pole signaalist eraldatud. Kuigi see lisab keskmistatud lainekujusse määramatust, saame me

matemaatiliselt võrrelda erinevate keskmistamisviiside efektiivsust.

4.4.1 Olemasolev ajapõhine meetod.

Keskmise EKG lainekuju leidmine olemasoleval viisil on eelnevalt kirjeldatud [2, lk. 2].

Nimetagem seda ajapõhiseks, kuna signaalilugemeid keskmistatakse ajalise vastavuse järgi.

Page 19: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

19

Selline keskmistamine programmi ave.m abil (Lisa 9.7.10) andis joonisel 13 näha oleva

tulemuse.

Joonis 13: tavaline

keskmistamine,

sünkropunktiks R-saki tipp.

Katse at1.

Programmi ave.m väljund.

Tulemus iseenesest on intuitiivselt peaaegu aksepteeritav (va. „hüpe“ üleminekukohas), kuid

tekib küsimus ka tulemuse tõepärasuses, kuna erineva perioodiga südametsükleid on

keskmistatud „sama mõõdupuu“ järgi.

4.4.2 Faasipõhine keskmistamine. FiiA meetod.

FiiA meetodiks nimetame antud juhul eelnevalt esitatud Aϕ arvutamise valemi

rakendamist südametsükli faaside leidmiseks ja keskmise lainekuju arvutust selle põhjal.

Joonis 14: Keskmistatud

lainekuju fiiA meetodil,

südametsükli alguseks Ps.

Katse at1.

Programmi fiiA.m väljund.

Page 20: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

20

Joonisel 14 kujutatud FiiA meetodil keskmistatud lainekuju on ebaloomuliku kujuga

seepärast, et P-saki alguse määramine ei ole kuigivõrd täpne ning määramatus suureneb P-

saki algusest ja põhjustab R-ja T-saki ebanormaalse kuju.

Füsioloogilises mõttes sobib P-saki algus kui siinussõlme aktiviseerumine igati südametsükli

alguseks, kuid keskmistamise puhul tuleks valida selleks R-saki tipp.

Seetõttu teeme teoreetilises valemis muudatuse (mis ei muuda selle kehtivust) ja loeme

südametsükli alguseks R-saki tipu. Kohandatud meetodit nimetame meetodiks fiiA2.

Tulemus samade katseandmete (at1) puhul on joonisel 15. Vōib märgata, et signaali kuju on

muutunud tōepärasemaks, ka R-saki amplituud on usaldatavam.

Joonis 15: Keskmistatud

lainekuju fiiA2 meetodil,

südametsükli alguseks Rm.

Katse at1. Programmi fiiA2.m

väljund.

Mõned fiiA2 meetodil keskmistatud lainekujude näited on lisades (Lisa 9.2).

4.4.3 Faasipõhine keskmistamine. FiiB meetod.

FiiB meetodil keskmistamise alus on eelnevalt esitatud valem Bϕ .

Kui me üritame EKG keskmist lainekuju leida faasiarvutuse abil, siis on oluline, et me

keskmistaksime omavahel neid signaali punkte, mis on (ligikaudu) samasuguse faasiga.

Nii fiiA kui fiiB meetod töötavad samal pöhimõttel, kuid juba mainitud põhjusel (süstoli ja

diastoli erinev varieeruvus) keskmistatakse fiiB meetodil omavahel signaalipunkte

südametsükli algusest diastolini ja siis diastoli signaalipunkte omavahel.

Page 21: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

21

Joonis 16:

Keskmistatud

lainekuju fiiB

meetodil,

südametsükli alguseks

Ps. Katse at1.

Programmi fiiA2.m

väljund.

Keskmistamise tulemus on joonisel 16. Kuid kuna faasiarvutus toimub siingi P-saki algusest,

siis on jällegi R-saki amplituud oodatust madalam. Ent vōrreldes algse fiiA meetodiga on

tulemus märgatavalt paranenud. Keskmiste lainekujude näiteid on näha lisades (Lisa 9.3).

4.4.4 Veel üks keskmistamise võimalus – fiiB2

Faasipōhiste meetodite hulgast võiks vähemalt teoreetiliselt kõige parema

keskmistamistulemuse anda meetodil fiiB pōhinev moodus, kus aga sarnaselt fiiA2.m

programmile vōetakse südametsükli alguseks R-saki tipp. Sel juhul ( ) 0aRϕ = , ( ) 1Tlϕ = ja

P-saki alguse faas vōiks olla määratud mingi negatiivse konstandiga ( )sP constϕ = − . Faasi

muutumise graafik vōiks välja näha selline (joonis 17).

Joonis 17: faasi muutumine

(veel implementeerimata)

meetodi fiiB2 kasutamisel.

Page 22: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

22

Joonisel väljendatud tähendab lühidalt seda, et selle meetodi puhul tuleb keskmistada kolmes

lõikes: P-saki algusest R-saki tipuni, R-saki tipust T-saki lõpuni ja T-saki lõpust järgmise

P-saki alguseni. See tingib natuke keerukustunud faasiarvutuse, mida tuleks edaspidiselt

korrektselt rakendada.

4.4.4 Meetodite vōrdlus.

Vōrdleme tavapärase keskmistamise (joonisel 13 ) usaldusväärsust vōrreldes fiiA2 meetodil

(joonis 15) keskmistamisega. Usaldusväärsuse kontrolliks sobib hästi dispersioonianalüüs

valemi

rakendamine igale südametsükli punktile, kus jy on signaali väärtus

antud punktis j-nda südametsükli korral ja y on keskmise lainekuju

väärtus antud punktis. Eelnevalt tuleb seejuures sünkroniseerida erinevad südametsüklid R-

saki tipu järgi nii ajaliselt kui ka amplituudiliselt, sättidest nii, et dispersioon tuleks R-sakile

vastavas punktis 0. Allpool (joonis 18) ongi visualiseeritud vastav protsess: punase ja sinise

värviga on südametsüklid sünkrooni aetud vastavalt tavalise ja fiiA2 meetodil saadud

keskmise lainekuju järgi.

Joonis 18: dispersiooni arvutamisele eelnev sünkroniseerimisprotsess.

Katse at1. Programmi disper.m (Lisa 9.7.11) väljund.

2

1

( )nj

j

y y

n=

−∑

Page 23: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

23

Sellisel viisil leitud dispersioonid on näha joonisel 19.

Joonis 19: keskmistatud

lainekujud ( sinise

katkendjoonega tavalisel

meetodil ja punase

katkendjoonega fiiA2

meetodil ) ja dispersioonid

( vastavate värvidega

pidevad jooned ).

Katse at1. Programmi

disper.m väljund.

Joonise 19 vaatlemisel on tajutav järeldus, et keskmise lainekuju leidmiseks esitatud fiiA2

meetod ei ole senisest keskmistamismeetodist parem.Ehkki fiiA2 meetodi rakendamisel ei

teki keskmisest lainekujust perioodilise signaali moodustamisel „hüpet“, on saadud tulemus

vähem usaldusväärsem.

Joonisel 20 on näha dispersioonide võrdlus fiiB meetodil ja tavalise keskmistamise puhul.

Joonis 20: keskmistatud

lainekujud ( sinise

katkendjoonega tavalisel

meetodil ja punase

katkendjoonega fiiB

meetodil ) ja dispersioonid

( vastavate värvidega

pidevad jooned ).

Katse at1. Programmi

disper.m väljund.

Page 24: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

24

Saab teha järelduse, et olemasolev, ajapōhine meetod määrab R-saki amplituudi kõige

täpsemalt. Tasuks proovida, mis juhtub kui sünkroniseerida ka fiiA2 ja fiiB meetoditel leitud

keskmised lainekujud mitte antud meetodiga leitud keskmise lainekuju R-saki tippude, vaid

tavalise meetodi R-saki amplituudi järgi.

Selleks tuleb programmis disper.m muuta rida:

tsykkel=ekg50(Ra(i)-round(rakesk./2):Ra(i)+round(rakesk./2)-1)-synkro;

reaks:

tsykkel=ekg50(Ra(i)-round(rakesk./2):Ra(i)+round(rakesk./2)-1)-synkro2;

Vahetuse tulemusena andis programmi disper.m käivitamine vastavalt eelneva fiiA2 ja fiiB

meetodi rakendamisel joonistel 21 ja 22 oleva tulemuse.

Joonis 21:

Keskmistatud lainekujud ja

dispersioonid.

Katse at1.

Joonis 22:

Keskmistatud lainekujud

ja dispersioonid.

Katse at1.

Page 25: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

25

Seega, antud meetodil dispersioonide leidmine sõltub keskmise lainekuju R-saki tipu

amplituudi täpsest määramisest. Kui keskmise lainekuju R-saki tipp on liiga madal, siis

suureneb dispersioon ka R-sakist vasakule ja paremale.

Valik dispersioonide graafikuid on näha lisades (Lisa 9.4), seejuures pole muudetud eelnevalt

kirjeldatud viisil programmi disper.m.

4.5 Südame löögisagedus kui pidev funktsioon.

Südame löögisagedus on ajaühikus (1 min.) toimunud südamelöökide (perioodide) arv.

Perioodi pikkust mõõtsime seni perioodi lõpus, see kujutas endast aega antud perioodi

algusest kuni lõpuni. Oleme kasutanud ka südametsükli faasi mõistet, mis hakkas kasvama

nullist iga tsükli alguses ja sõltus seega perioodi alghetke määramisest.

Selleks, et üle minna pidevate ja ka tsükli alghetkest sõltumatute sageduste, perioodide ning

faaside juurde, võtame kasutusele definitsiooni:

"Perioodilise signaali faas on pidev ajafunktsioon, mille muutumise kiirus igal ajahetkel on

samasuguse konstantse kiiruse korral ühele ajaühikule vastav tsüklite (perioodide) arv."

Siit järeldub:

1. sagedus on faasi tuletis,

2. periood on faasi pöördväärtus,

3. nii sagedus kui ka periood on pidevalt ajas muutuvad.

Ajas pidevalt muutuv faas on ise muidugi lõplikult meile kättesaamatu.

Aga mida rohkem teame selle muutuja väärtusi ja pannes neist läbi sujuva funktsiooni

(graafikul kõvera läbi punktide), seda täpsema ettekujutuse me temast saame.

Minnes nüüd tagasi EKG juurde, eeldame, et meil on teada P-, R- ja T-sakkide tippudele

vastavad ajahetked. Esialgu pole teada, kui palju kasvab faasi väärtus mingist P-sakist R-

sakini või R-sakist T-sakini. Kuid ajaintevallide P-P, R-R ja T-T jooksul on faasi väärtus

suurenenud ühe võrra (samade naabersakkide vahele jääb üks tsükkel).

Loeme nüüd argumendiks näiteks R-saki tippudele vastavad ajahetked ja võtame

funktsiooniks R-sakkide arvu katse algusest. Ühendame saadud punktid pidevalt

differentseeruva funktsiooniga. Selleks sobivad väga hästi splainid. Leides siin tuletiste

väärtused R-saki tipu kohtadel, saame südamesgedused vastavates kohtades. Korrates sama

P- ja T-sakkidega, on meil iga südametsükli jaoks kolm löögisageduse väärtust : R-, P- ja

T-saki tippude kohtadel. Ühendades need need punktid omakorda splainidega,

saame pideva südame löögisageduse. Viimase pöördväärtus on ajas pidevalt

Page 26: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

26

muutuv südametsükli periood. Eelnevat illustreerivad joonised 12 ja 13. Joonise 12 ülemises

osas on ära toodud hingamisliigutuste anduri signaal ("resp"); alumisel osal on märgata

südamesageduses ilmset respiratoorset arütmiat. Vt. ka Lisa 9.2 ja Lisa 9.3.

Joonis 23: PP,RR ja TT põhjal südamesgeduste leidmine. Programmi Iluspilt.m (Lisa 9.7.4)

väljund. Ülemises osas on P-,R- ja T-sakkide maksimumide ajahetkedele vastavad

järjekorranumbrid. Seejuures on nähtavuse parandamiseks P- ja T-sakkide tippude

järjekorra numbritele antud y-teljel vastavalt nihe -5 ja +5. Siia on kantud ka

hingamisanduri võljundsignaal - "resp". Alumises osas on cubic spline'i abil interpoleeritud

ülemiste graafikute tuletised.

Joonis 24:

P-,R-ja T-saki ühise

löögisageduse

moodustamine.

Katse kv2.

Programmi

kolmest.m

(Lisa 9.7.5) väljund.

Page 27: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

27

5. TULEMUSTE ANALÜÜS

Käesolev töö püüdis uurida EKG-d kui pidevalt muutuva perioodiga signaali, lähtudes

algoritmiliselt määratavatest kinnispunktidest signaalis (P,-R- ja T-saki tipud).

Nimetatud punktidest mōōdetud perioodide asetamisel ajateljele (vt. joonis 9) selgus, et

kindlat, silmnähtavat korrapära perioodi pideval muutumisel ei ole. Samas näitas EKG

löögisageduse analüüs, et vastavate perioodide pōhjal arvutatud sagedused on omavahel

tugevas korrelatsioonis ning teatud viisil seotud hingamistegevusega.

Füsioloogiast tuntud südameregulatsioonitegurid, nii südamepoolsed (südameretseptorid) kui

südamevälised (sümpaatikus, parasümpaatikus) avaldavad oma kontrolli südame

löögisageduse üle keerukal moel. Kohane näib analoog arvutisüsteemidega, kus protsessori

töö seisneb süsteemi tavapärasele funktsionaalsusele lisaks veel teatud arvu

sisend-väljundseadmetele reageerimises. Antud juhul on siis südameregulatsioonitegurid

justkui sisendseadmed vōi muutujad, mis teatud olekutes olles annavad signaale südame

töökäigu vajalikuks muutmiseks.

Eesmärgiks seatud parema keskmise lainekuju leidmine ei õnnestunud: esitatud faasipõhised

ehk EKG kui pidevalt muutuva perioodiga signaali hüpoteesist lähtuvad meetodid osutusid

vähem usaldusväärsemaks. Küll aga oleks tarvilik alapeatükis 4.4.4 esitatud meetodi fiiB2

edaspidine läbimõeldud realiseerimine.

Page 28: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

28

6. KOKKUVÕTE

Südameregulatsiooni mehhanismi keerukus seisneb löögisagedust ja- mahtu mōjutavate

tegurite paljususes. Seejuures, nagu kinnitas ka käesolev töö, ei muutu südame periood

ühtlaselt pidevalt ehk ei toimi nö. pideva tagasisidemehhanismina, vaid pigem muutub

mitmete tegurite keeruka summaarse käitumise järgi.

Tänapäeval populaarsust koguv organisatsioonilise käitumise teooria,

nn. swarm intelligence [6], võib üldises mõttes üsna täpselt kirjeldada ka südame talitust.

Selle käsitluse kohaselt on süda organisatsiooniliselt käituvate rakkude kogum, mis

dünaamiliselt üksteise tegevust koordineerides (analoogne linnuparve liikumisega), teostab

talle määratud ülesannet ehk võimalikult efektiivset pumpamist.

Töös realiseeritud EKG lainekuju keskmistamine esitatud fiiA2 ja fiiB meetodil ei

andnud vōrreldes olemasoleva meetodiga paremust. Juba teoreetiliselt tunduvalt efektiivsem

ning samuti faasipōhine meetod fiiB2, vajab veel tōhusamat realiseerimist tulevikus. Kui

selguks, et see meetod on vähemalt sama tõhus kui praegune, siis on üsna põhjendatud seda

ka edaspidi praktiliselt kasutada. See omakorda kinnitaks eksperimentaalselt EKG kui

pidevalt muutuva perioodiga signaali hüpoteesi sisukust, misjärel saaks uurida sügavamalt

selle käsitluse erinevaid aspekte ja võimalikke rakendusi.

Tänuavaldused dots. Jüri Vedrule ja tema poolt juhitud katsegrupile, mistõttu sai võimalikuks

antud töö teostamine; samuti Peet-Henn Kingisepale füsioloogiaalaste selgituste eest.

Page 29: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

29

7. SUMMARY

THE PERIOD OF CARDIOGRAPHIC SIGNALS AS A CONTINUOUS VARIABLE

In this work there have been introduced some concepts of ECG as a signal with continuous

period. Some conclusions can be made, concerning the periodicity of ECG and

the working process of heart. As it is known from human physiology, the working of the

heart is complex and influenced by many factors and therefore the period of the heart

changes not evenly continuously.

The influence appears to be rather quite unpredictable sum of those multiple factors.

So, technically the heart is not alike continuous feedback system,

sooner it seems to act according to the concept known as an swarm intelligence [6].

The actuality of finding an averaged waveform is present for example in

Foucault’ cardiography. Phase-oriented methods introduced in this work, did not gave

advantages compared to existent method. Nevertheless, the discussed (also phase-oriented)

principle fiiB2 , should be further implemented to compare the results with conventional

method.

Page 30: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

30

8. KASUTATUD KIRJANDUSE LOETELU

1. Kingisepp,P-H., „Inimese füsioloogia“, Tartu, Tartu Ülikool, lk. 37-44,48-52, 2000.

2. Goldberger, Ary.L., Nonlinear Dynamics, Fractals, and Chaos Theory:

Implications for Neuroautonomic Heart Rate Control in Health and Disease,

http://www.physionet.org/tutorials/ndc , May 10, 2001

3. Vedru,J.,Makarova,O.,Tina,V., Averaged waveforms of electrical bioimpedance:

construction and comparison,

http://www.physic.ut.ee/~vedru/PUB/AvrWav_01.pdf, September 19, 2001

4. Pan,J.,Tompkins,W.J., A Real-Time QRS Detection Algorithm,

http://www.engr.wisc.edu/bme/faculty/tompkins_willis/Pan.pdf, July 1985

5. Wang,F.,Quinion,R.,Carrault,G.,Cordier,M.O., Learning structural knowledge from the

ECG, http://www.irisa.fr/dream/dataFiles/quiniou/ismda01.pdf, 2001

6. Jesper Hoffmeyer, Swarm-semiotics,

http://www.molbio.ku.dk/MolBioPages/abk/PersonalPages/Jesper/Swarm.html,

June 1995

Page 31: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

31

9. LISAD. Lisa 9.1

Page 32: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

32

Lisa 9.2

Page 33: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

33

Lisa 9.3

Page 34: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

34

Lisa 9.4

Page 35: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

35

Lisa 9.4 järg

Page 36: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

36

Lisa 9.5

Page 37: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

37

Lisa 9.5 järg

Page 38: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

38

Lisa 9.6

Page 39: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

39

Lisa 9.7.1

%Programmi nimi: ecg.m

%Kasutamine: kohe pärast katseandmete sisselugemist (nt. load kv2)

%Abifunktsioonid: H50z (50Hz müra filtreerimiseks)

%Väjund: joonisel 6 näha olev graafik.

M=length(ekg);

ekg50=H50z(ekg,t); %hakkame otsima R-saki langevat osa:

N=round(0.012/diff(t(1:2))); % =3 punkti mahub 0.01sec sisse

junk=zeros(size(ekg50));

junk(1+N:end-N,1)=ekg50(1+2*N:end)-ekg50(1:end-2*N); %ekg50 muutub 0.02s-ga

% niipalju

yunk=junk; junk=junk.*(junk<0.3*min(junk)); %nullime, kus väiksem

%/0.5*min(junk)/ langus

plot(t,[detrend(ekg50),ekg,junk,ekg-mean(ekg)]), grid,

title('plot(t,[detrend(ekg50),ekg,junk,ekg-mean(ekg)]),')

%Punktide numbrid, kus sellised langused algavad (mittenullide jrk.nr.-tes

%on hüpe):

funk=find(junk); Junk=nonzeros(funk.*(diff([0;funk])>21*N));

%lokaalsete maksimumide kohad junk'ile:

[J3nk,Jn]=min(junk(ala(Junk,2*N)));

Junk=Junk+Jn'-1; Junk(1)=[]; Junk(end)=[]; clear J3nk Jn,

hold on, plot(t(Junk),junk(Junk),'x-'), hold off,

%R-saki max ja min:

[J3nk,Jn]=max(ekg(ala(Junk,-3*N))); Ra=Junk+Jn'-3*N;

[J3nk,Jn]=min(ekg(ala(Junk,4*N))); Rl=Junk+Jn'-1; clear J3nk Jn,

hold on, plot(t(Ra),ekg(Ra),'k',t(Rl),ekg(Rl),'k'), hold off,

%Ra(1)=[]; Rl(1)=[]; Ra(end)=[]; Rl(end)=[]; %et poleks poolikuid tsükleid

%R-sakid olemas, edasi Q-sakid:

y3nk=zeros(size(yunk));

y3nk(1+2*N:end-2*N,1)=yunk(1+4*N:end)-yunk(1:end-4*N); %yunk muutub

% 0.04s-ga niipalju

[J3nk,Jn]=max(y3nk(ala(Ra',-7*N))); Qa=Ra+Jn'-7*N; clear J3nk Jn;

ppQa=spline(t(Qa),ekg50(Qa));

%P-sakk (otsime alast 0.2sec eespool Qa):

Pala=ala((Qa-N),-15*N);

[J3nk,Jn]=max(ekg(Pala)); Pm=(Qa-N)+Jn'-15*N; clear J3nk Jn,

hold on, plot(t(Pm),ekg(Pm),'k',t(Qa),ekg(Qa),'.k'), hold off,

XN=flipud(ala(Pm,-6*N));

j2nk=(0.999*ekg50(XN)>ppval(ppQa,t(XN))); %! Seadekoht

Pa=(Pm'-sum(cumprod(j2nk)))'; % aga proovime teistmoodi kah:

[J3nk,Jn]=max(y3nk(ala(Pm',-7*N))); Pa3=Pm+Jn'-7*N; clear J3nk Jn,

Ps=min([Pa';Pa3'])'; %eespoolasuv tundub parem olevat

hold on, plot(t(Pa),ekg(Pa),'.r',t(Pa3),ekg(Pa3),'*'), hold off,

hold on, plot(t(Ps),ekg(Ps),'oc'), hold off,

%P-sakk olemas. Edasi otsime T-sakki 0.24sec alasteespool Qa):

[J3nk,Jn]=max(ekg(ala(Rl',28*N))); Tm=Rl+Jn'-1; clear J3nk Jn,

hold on, plot(t(Tm),ekg(Tm)), hold off,

%T-saki lõpp:

[J3nk,Jn]=min(ekg(ala(Tm',20*N))); Tl=Tm+Jn'-1; clear J3nk Jn,

hold on, plot(t(Tl),ekg(Tl),'ob'), hold off,

[J3nk,Jn]=min(y3nk(ala(Rl',10*N))); Ta3=Rl+Jn'-1; clear J3nk Jn,

XN=flipud(ala(Tm,-17*N));

j3nk=(ekg50(XN)>ppval(ppQa,t(XN))); %! Seadekoht

Ta=(Tm'-sum(cumprod(j3nk)))'; % aga proovime teistmoodi kah:

hold on, plot(t(Ta3),ekg(Ta3),'xr',t(Ta),ekg(Ta),'*'), hold off,

Ts=min([Ta';Ta3'])'; %eespoolasuv tundub parem olevat

hold on, plot(t(Ts),ekg(Ts),'oc'), hold off,

Page 40: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

40

Lisa 9.7.2

%Programmi nimi: H50z.m

%Käivitamine: kutsutakse välja programmi ecg.m poolt

%Väljund: tagastab 50Hz-st võrgumürast vabastatud EKG signaali

function ekg50=H50z(ekg,t);

k=length(ekg);

Kf=(1/50)/diff(t(1:2)); %ajavahemike arv 50Hz perioodis, Kf=5;

kf=fix(Kf/2); ots=kf-(Kf-1)/2;

F=[ots*ones(k,[2*ots]),ones(k,Kf-2*ots),ots*ones(k,[2*ots])];

F=(spdiags(F,-kf:kf,k,k))/Kf;

for i=[1:kf,k-kf+1:k], F(i,:)=F(i,:)/sum(F(i,:)); end, %SILUB OTSAD

ekg50=F*ekg(:); if size(ekg,1)==1, ekg50=ekg50'; end,

Lisa 9.7.3 %Programmi nimi: per.m

%Kasutamine: kui on laaditud katsefail ja käivitatud programm

% ecg.m, siis käivitada programm per.m

%Väljund: joonistel 10 ja 11 nähtavad graafikud ehk PP-,RR-ja TT

% perioodid ning statistikat nende kohta.

UM1=[Pm Ra Tm]; UM3=[t(Pm) t(Ra) t(Tm)];

hm=[diff([zeros(1,3);UM3])]';kala=diff(hm(2,:));%RR-perioodide differentsid

st=std(hm);%standardhälve

vahed=[hm(3,:)-hm(2,:);hm(1,:)-hm(2,:)];

vahed2=vahed(:);%Diffrentsid PP RR TT perioodide vahel

figure(6);grid;subplot(2,2,1);hold on;

title('RR-perioodide differentsid');meankala=mean(abs(kala));

plot(abs(kala),'x');axis([0 length(kala) -0.2 0.2]);

line(0:length(kala),meankala);hold off;grid;subplot(2,2,2);hold on;

title('Standardhälve hulgast Pm Ra Tm');plot(st);st2=mean(st);

line(0:length(st),st2);axis([0 length(st)+5 -0.05 0.05]);hold off;

subplot(2,1,2);hold on;

title('perioodide PP,TT,RR vahelised differentsid abs(TT(i)-RR(i)) ja

abs(PP(i)-RR(i)) ');

plot(abs(vahed2),'.:'); grid;axis([0 length(vahed2)+5 -0.1 0.1]);

meanv=mean(abs(vahed2));line(0:length(vahed2),meanv);hold off;

jj20=[diff([zeros(1,3);UM3])]'; %-->spline läbi kolme punkti

um00=UM1'; um00=um00(:);

yy2=spline(t(um00),jj20(:),t);pp=spline(t(um00),jj20(:));

figure(2);bar(t([Ra]'),[diff([zeros(1,1);UM3(:,2)])]');

colormap(cool);hold on;

%graafik aja põhjal

plot(t([UM1]'),hm,'.:');

plot(t,yy2,'r');hold off;grid;

Lisa 9.7.4 %Programmi nimi: Iluspilt.m

%Kasutamine: eelnevalt laaditud katsefail ja käivitatud,

programm ecg.m. Katsefaili nimi

tuleb muuta ka programmi tekstis vastavaks

(antud juhul ot2)

%Väljund: pideva löögisageduse graafik.

hold off,grid on,

subplot(211), hold on, plot(t(Ra),(1:length(Ra)),...

'.:',t(Tm),(1:length(Tm))+5,'.r',t(Pm),(1:length(Pm))-5,'.g'), grid,

title('Katse ot2'), xlabel('t(Pm),t(Rm),t(Tm)'),

ylabel('tipu jrk.nr , hingamine'),plot(t,ot2(:,3));hold off,

subplot(212),

Page 41: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

41

Lisa 9.7.4 järg plot(t(Ra),fnval(fnder(csapi(t(Ra),1:length(Ra))),t(Ra)),t(Tm),...

fnval(fnder(csapi(t(Tm),1:length(Tm))),...

t(Tm)),t(Pm),fnval(fnder(csapi(t(Pm),1:length(Pm))),t(Pm)));

grid,xlabel('aeg '),ylabel('sag. P,R,T-sakkide järgi');

Lisa 9.7.5 %Programmi nimi: kolmest.m

%Kasutamine: eelnevalt laaditud katsefail ja käivitatud

programm ecg.m.

%Väljund: kolm erinevat löögisageduse ja nende ühise

löögisageduse graafik.

M=length(ekg); t=(0:M-1)'*0.004;

x=Pm(1):Tm(end); %graafiku jaoks hea

ppwRa=fnder(csapi(t(Ra),0:length(Ra)-1)); %R-sakid aeg-faas tasandil;

spline, tuletis

wRa=fnval(ppwRa,t(Ra)); xwRa=fnval(ppwRa,t(x)); %sagedused(=tuletis faasist)

%- punktid, pidev

ppwPm=fnder(csapi(t(Pm),0:length(Pm)-1)); %P-sakid - " -

wPm=fnval(ppwPm,t(Pm)); xwPm=fnval(ppwPm,t(x));

ppwTm=fnder(csapi(t(Tm),0:length(Tm)-1)); %T-sakid - " -

wTm=fnval(ppwTm,t(Tm)); xwTm=fnval(ppwTm,t(x));

Jprt=[Pm,Ra,Tm]'; Jprt=Jprt(:);

Wprt=[wPm,wRa,wTm]'; Wprt=Wprt(:);

subplot(211), plot(t(x),[xwPm,xwRa,xwTm]), grid %pidevad sagedused (P,R,T

%eraldi,üksikult)

xlabel('Kolm erinevat löögisagedust: P-,R- ja T-sakkidest. aeg[sec]'),

title(['Katse ',Dasc(i,1:3)]), ylabel('[Hz]'),

hold on, plot(t([Pm,Ra,Tm]),[wPm,wRa,wTm],'.'), hold off, %sagedused

punktides (P,R,T)

subplot(212),

plot(t([Pm,Ra,Tm]),60*[wPm,wRa,wTm],'.'), grid, %punktid(P,R,T), millest

%spline läbi, saame:

SLs=60*fnval(csapi(t(Jprt),Wprt),t(x)); %Südame löögisagedus P-,R- ja

%T-sakkide

hold on, plot(t(x),SLs), hold off, %põhjal kokku

ylabel('Südame löögisagedus [lööki/min]')

xlabel('Kolme löögisageduse (P-,R- ja T-sakkide) ühine.aeg[sec]'),

Lisa 9.7.6 %Programmi nimi: fiiA2.m

%Kasutamine: eelnevalt laaditud andmefail. Nt: load at1

% seejärel käivitada programm ecg.m.

% Nüüd võib käivitada antud programmi.

%Abifunktsioonid: otsi.m

%Väljund: Faasigraafik, keskmise lainekuju joonis.

UMper2=[t(Ra)]; UM1=[Pm Ra Tm];

rper=[diff([zeros(1,1);UMper2])];

UM3=[t(Pm) t(Ra) t(Tm)];

rkesk=mean(rper);

rkesk2=round(mean(rper)./diff(t(1:2)));

lugemeid=rkesk./diff(t(1:2));

%phetked=linspace(0,rkesk,lugemeid);

faasip=linspace(0,1,lugemeid);%faasiv22rtuste vahemik 0-st 1-ni

jj20=[diff([zeros(1,3);UM3])]';

um00=UM1'; um00=um00(:);%

tt=t;tt(Ra)=0; %nullitakse R-saki tipule vastavad ajahetked

nullid=find(tt==0);

Page 42: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

42

Lisa 9.7.6 järg nlopp=(tt(end).*(1/diff(t(1:2)))-(nullid(end,1)));

%arvutatakse lugemite arv kuni viimase P-saki alguseni

nstart=(nullid(1,1)-0);

for i=nstart:length(tt)-nlopp-1,

j=i+1;

if (tt(i)==0),

while tt(j)~=0,

tt(j)=tt(j-1)+diff(t(1:2));

j=j+1;

end, end, end tt=tt(nstart:nullid(end,1)); %signaali tt on tarvis integraaliradade jaoks.

ekesk=zeros(length(faasip),1); keskmekg=zeros(length(faasip),1);

ecounter=zeros(length(faasip),1);%loendaja, kui mitu arvutatud faasilugemit

% langeb antud punkti.

ekgp0=ekg50(nstart:nullid(end,1));

YY = ppval(spline(t(um00),jj20(:)), t);

YY = YY(nstart:nullid(end,1));

YY=(YY).^-1;

for in=1:length(tt)-1,

in2=in+1;

if (tt(in)==0) %siin leitakse ülemine integreerimisrada iga P-perioodi

%jaoks

while tt(in2)~=0, %eraldi,kuna P-algused ära nullitud, siis ylemine rada

%võrdub alati

in2=in2+1; %nullile eelnevale lugemile 0.04s juurde liites

rada2=tt(in2-1)+diff(t(1:2));

%rajad leitud: alumine alati 0 ja ylemine rada2

end, end

in1=otsi(tt,in,0); in3=otsi(tt,in,1);

if(in1~=in),

fiiAA(in,1)=trapz(tt(in1:in),YY(in1:in))./trapz(0:diff(t(1:2)):rada2,...

YY(in1:in3));

else fiiAA(in,1)=0;

end

leitud=0;cv=1;

while (leitud==0),

if(fiiAA(in,1)>faasip(cv))

cv=cv+1;

elseif (fiiAA(in,1)==0),

cv=1;leitud=1;

else leitud=1;

end, end

ekesk(cv)=ekesk(cv)+ekgp0(in); ecounter(cv)=ecounter(cv)+1;

end

keskmekg=ekesk./ecounter;keskmekg(end)=[];

figure(5);plot(fiiAA,'r:');xlabel('Lugemid');ylabel('Faas');title('fiiA');

keskmekg=[keskmekg;keskmekg;keskmekg];

keskmekg=keskmekg(:);

figure(4);plot(keskmekg);

point1=find(keskmekg==max(keskmekg));

point1=point1(2,1); keskmekg=keskmekg(point1-rkesk2./2-

1:point1+rkesk2./2+1);

point1=find(keskmekg==max(keskmekg));

figure(8);plot(keskmekg,'r');

hold off; grid;

Page 43: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

43

Lisa 9.7.7 %Programmi nimi: fiiB.m

%Kasutamine: eelnevalt laaditud andmefail. Nt: load at1

% seejärel käivitada programm ecg.m.

% Nüüd võib käivitada antud programmi.

%Abifunktsioonid: otsi.m, ymarda.m

%Väljund: Faasigraafik, keskmise lainekuju joonis.

UMper2=[t(Ra)];rper=[diff([zeros(1,1);UMper2])];

rkesk=max(rper);rkesk2=round(max(rper)./diff(t(1:2)));

UM1=[Pm Ra Tm]; UM3=[t(Pm) t(Ra) t(Tm)];

UMp=[t(Ps) t(Tl)];

vahed2=[UMp(:,2)-UMp(:,1)];vahed2=vahed2(:);

tpm=max(vahed2);lugemeid=tpm./diff(t(1:2));

faasip=linspace(0,1,lugemeid);%faasiv22rtuste vahemik 0-st 1-ni

jj20=[diff([zeros(1,3);UM3])]'; um00=UM1'; um00=um00(:);

tt=t;tt(Ps)=0; %nullitakse P-saki algusele vastavad ajahetked

tt(Tl)=-1; nullid=find(tt==0); minyhed=find(tt==-1);

nlopp=(tt(end).*(1/diff(t(1:2)))-(nullid(end,1)));

lastmin=(minyhed(end,1));

%arvutatakse lugemite arv kuni viimase P-saki alguseni

nstart=(nullid(1,1)-0);

for i=nstart:length(tt)-nlopp-1,

j=i+1;

if (tt(i)==0), % et -1 jääks jadasse muutumatul kujul.

while tt(j)~=0,

if (tt(j)==-1),

tt(j+1)=tt(j-1)+2.*diff(t(1:2));j=j+2;

end

tt(j)=tt(j-1)+diff(t(1:2));

j=j+1;

end, end, end

tt=tt(nstart:nullid(end,1)); %signaali tt on tarvis integraaliradade jaoks.

loe=1;ekesk=zeros(length(faasip),1); keskmekg=zeros(length(faasip),1);

ecounter=zeros(length(faasip),1);%loendaja, kui mitu arvutatud faasilugemit

ekgp0=ekg50(nstart:nullid(end,1));%langeb antud punkti.

YY = ppval(spline(t(um00),jj20(:)), t);

YY = YY(nstart:nullid(end,1));

YY=(YY).^-1;

for in=1:length(tt)-1,

if (tt(in)==0),% kui P-saki algus,siis

if (in<lastmin),% et me ei l2heks viimasest T-saki lõpust üle

min1=otsi(tt,in,-1);%otsib järgmist T-saki lõppu integraaliraja jaoks

tt(min1)=tt(min1-1)+diff(t(1:2)); % -1 koht leitud, teeme selle

rada2=tt(min1-1)+diff(t(1:2)); %nüüd korralikuks ajalugemiks tagasi.

end, end

in1=otsi(tt,in,0);%otsib käesolevast hetkest in

%tahapoole jäävat esimest nullkohta

if(in1~=in),%kui käesolev hetk ei ole 0 (P-saki algus),siis arvuta

fiiBB(in,1)=trapz(tt(in1:in),YY(in1:in))./trapz(0:diff(t(1:2)):rada2,YY(in1

:min1));

else fiiBB(in,1)=0; %muidu aga vastus 0

end

if(in>1&tt(in)==0),

l6ppfaasid(loe)=fiiBB(in-1,1);fiiBB(in,1)=0;

loe=loe+1;

end

leitud=0;cv=2;

while (leitud==0),

if(fiiBB(in,1)<1),

if(fiiBB(in,1)>faasip(cv))

Page 44: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

44

cv=cv+1;

elseif (fiiBB(in,1)==0),

cv=1;leitud=1;

else

diff1=fiiBB(in,1)-faasip(cv);diff2=fiiBB(in,1)-faasip(cv-1);

if(abs(diff1)>abs(diff2)),cv=cv-1;

else cv=cv; end

leitud=1;

end

else leitud=1;

end, end

ekesk(cv)=ekesk(cv)+ekgp0(in);

ecounter(cv)=ecounter(cv)+1;

end

fiiEDk=mean(l6ppfaasid);%keskmine lõppfaas

fiiy=fix(fiiEDk);

FiiEDky=fiiy+ymarda(fiiEDk,fiiy,fiiy+1,diff(t(1:2)));

lugemeid=(FiiEDky-1)./diff(t(1:2));%lugemite arv keskmises diastolis

faasip2=linspace(1,FiiEDky,lugemeid);

ekesk2=zeros(length(faasip2),1);

keskmekg2=zeros(length(faasip2),1);

ecounter2=zeros(length(faasip2),1);

for in=1:length(tt)-1,

leitud=0;cv=2;

if(fiiBB(in,1)>=1&fiiBB(in,1)<=FiiEDky),

while (leitud==0),

if(fiiBB(in,1)>faasip2(cv)),

cv=cv+1;

elseif (fiiBB(in,1)==1),

cv=1;leitud=1;

else

diff1=fiiBB(in,1)-faasip2(cv);

diff2=fiiBB(in,1)-faasip2(cv-1); %vaadatakse kas fiiBB faas

if(abs(diff1)>abs(diff2)),cv=cv-1;%on lähem ühele või teisele

else cv=cv; end % faasiväärtusele

leitud=1;

end,end,end

ekesk2(cv)=ekesk2(cv)+ekgp0(in);

ecounter2(cv)=ecounter2(cv)+1;

end

keskmekg2=ekesk2./ecounter2;keskmekg2(1:2)=[];keskmekg(end-1:end)=[];

keskmekg=ekesk./ecounter; keskmekg(1:2)=[];

figure(5);plot(fiiBB,'r:');xlabel('Lugemid');ylabel('Faas');title('Faas:

fiiB');

keskmekg=[keskmekg;keskmekg2;keskmekg;keskmekg2;keskmekg;keskmekg2];

figure(4);plot(keskmekg);

point1=find(keskmekg==max(keskmekg));point1=point1(2,1);

keskmekg=keskmekg((point1-rkesk2./2):(point1+rkesk2./2));

keskmekg=keskmekg(:);point1=length(keskmekg)./2;

figure(8); title('fiiB meetod: keskmine lainekuju');

xlabel('Lugemid');ylabel('Amplituud');

plot(keskmekg);hold off;grid;

Page 45: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

45

Lisa 9.7.8 %Programm: otsi.m

%Kasutamine:

%Abifunktsioon fiiA ja fiiB valemi rakendamiseks

%Väljund: tagastab otsitava elemendi indeksi.

%kui fn==0, otsitakse käesolevast indeksist tahapoole jäävate elementide

%hulgast väärtust 0 ja tagastatakse leitud koha indeks.

%Kui fn==1, siis otsitakse nulli käesolevast kohast eespool, kui fn==-1,

%siis otsitakse elementi -1 eespoolt.Kui fn==-2, siis otsitakse -2

%eespoolt.

function XN=otsi(aeg,koht,fn);

if (fn==0),

while aeg(koht)~=0,

koht=koht-1;

end

XN=koht;

end

if (fn==1),

while aeg(koht)~=0,

koht=koht+1;

end

XN=koht;

end

if (fn==-1),

while aeg(koht)~=-1,

koht=koht+1;

end

XN=koht;

end

if (fn==-2),

while aeg(koht)~=-2,

koht=koht+1;

end

XN=koht;

end

Lisa 9.7.9 %Programm:ymarda.m

%Kasutamine: kasutav programmi fiiB poolt lõppfaasi murdosa

% ümardamiseks sobiva väärtuseni.

%Väljund: nt. kui lõppfaas oli 1.546, siis tagastab 0.5480.

function v2=ymarda(value,alumine,ylemine,step);

vahesid=1./step;

abijada=linspace(alumine,ylemine,vahesid);%et oleks 0.004 vahedega

dist1=abs(abijada(1:length(abijada))-value);

dist2=min(dist1);%minimaalse vahe väärtus

v1=find(dist1==dist2);v1=v1(1,1);%kui samakaugel, siis esimene variant

v2=v1.*step;

Lisa 9.7.10 %Programm: ave.m

%Kasutamine: käivitada pärast ecg.m käivitamist.

%Väljund: kuvatakse tavalisel meetodil leitud keskmine lainekuju

UMr2=[t(Ra)];

rper=[diff([zeros(1,1);UMr2])];

rmax=max(rper);pikkus=round(rmax./diff(t(1:2)));

rkesk=round(mean(rper)./diff(t(1:2)));

vahemik=2.*pikkus;%keskmistatakse vasakule ja paremale poole Ra-st

Page 46: Südametekkeliste signaalide periood kui pidev muutujaraivoa/Bakalaureus.pdfFaasi arvutamiseks väärtusvahemikus [0..1] on eelnevast lähtudes järgmised kaks valemit: . 1 1 0 ( )

46

Lisa 9.7.10 järg keskkuju=zeros(vahemik,1);

keskkuju2=zeros(vahemik,1);

count=0;

for i=2:length(Ra)-1,

sync=Ra(i);%synkropunkt

j=1;

while(j~=vahemik), %tuleb hakata liitma ekg punkte synkropunktist max RR

keskkuju(j)=keskkuju(j)+ekg50(sync-pikkus+j-1);%perioodi v6rra

j=j+1; %vasakule ja paremale

end

count=count+1;

end

keskkuju2=keskkuju./count;%aritm. keskmine

point2=find(keskkuju2==max(keskkuju2));

figure(6);keskkuju3=keskkuju2((point2-rkesk./2-1):(point2+rkesk./2+1));

keskkuju3=keskkuju3(:);point2=find(keskkuju3==max(keskkuju3));

plot(keskkuju3);

Lisa 9.7.11 %Programmi nimi: disper.m

%Kasutamine:

% 1)eelnevalt on laaditud katsefail, käivitatud programm ecg

% 2)käivitatud kas programm fiiA2 või fiiB keskmise lainekuju leidmiseks

% 3)käivitatud programm ave.m tavalisel meetodil keskmise lainekuju

% leidmiseks

% 4)seejärel käivitada programm disper.m

%Väljund: dispersioonide ja keskmiste lainekujude võrdlus

UMra=[Ra];

raper=[diff([zeros(1,1);UMra])];rakesk=mean(raper); %keskmine lugemite arv

i=1;point=length(keskmekg)./2;

if(point1~=fix(point1)), point1=round(point1); end

while (i<=length(Ra)),

synkro=ekg50(Ra(i))-keskmekg(point1);%sync R-tipu järgi

synkro2=ekg50(Ra(i))-keskkuju3(point2);%sync R-tipu järgi

tsykkel=ekg50(Ra(i)-round(rakesk./2):Ra(i)+round(rakesk./2)-1)-synkro;

figure(43);plot(tsykkel);hold on;

dispe(:,i)=(tsykkel-keskmekg(point1-...

round(rakesk./2):point1+round(rakesk./2)-1)).^2;

tsykkel2=ekg50(Ra(i)-round(rakesk./2):Ra(i)+round(rakesk./2)-1)-synkro2;

plot(tsykkel2,'r');

dispe2(:,i)=(tsykkel2-keskkuju3(point2-

round(rakesk./2):point2+round(rakesk./2)-1)).^2;

i=i+1;

end

dispe=dispe';dispe2=dispe2';

usaldus=sum(dispe)./sqrt(length(dispe));

usaldus2=sum(dispe2)./sqrt(length(dispe2));hold off,

figure,

hold on; plot(usaldus,'r');plot(usaldus2);

plot(2.*keskmekg(point1-round(rakesk./2):point1+round(rakesk./2)-1),'r:');

plot(2.*keskkuju3(point2-round(rakesk./2):point2+round(rakesk./2)-1),':');

hold off;clear dispe,clear dispe2