SlideShare a Scribd company logo
1 of 46
Download to read offline
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
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
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
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).
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.
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.
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).
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)
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
( )
d
C
dt T t
ϕ
= ⋅ , kus C on konstant. Edasi saame:
( )
C
d dt
T t
ϕ = , millest mõlemaid pooli
integreerides saame faasi arvutamise üldise valemi T(t) korral:
0
1
( )
t
C dt
T 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:
. 1
1
( )0
tes i
C d
T
τ
τ
= ⋅ ∫
1
1
( )0
ti
C d
T
τ
τ
= ⋅ ∫
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
t
d
T
B tesi
d
T
τ
τ
ϕ
τ
τ
∫
=
∫
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).
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)
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
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).
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.
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.
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
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.
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.
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.
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.
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
( )n
j
j
y y
n=
−
∑
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.
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.
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
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.
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.
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.
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.
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
31
9. LISAD. Lisa 9.1
32
Lisa 9.2
33
Lisa 9.3
34
Lisa 9.4
35
Lisa 9.4 järg
36
Lisa 9.5
37
Lisa 9.5 järg
38
Lisa 9.6
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,
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),
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);
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;
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))
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;
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
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

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Bakalaureus

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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).
  • 5. 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.
  • 6. 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.
  • 7. 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).
  • 8. 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)
  • 9. 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 ( ) d C dt T t ϕ = ⋅ , kus C on konstant. Edasi saame: ( ) C d dt T t ϕ = , millest mõlemaid pooli integreerides saame faasi arvutamise üldise valemi T(t) korral: 0 1 ( ) t C dt T 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: . 1 1 ( )0 tes i C d T τ τ = ⋅ ∫ 1 1 ( )0 ti C d T τ τ = ⋅ ∫
  • 10. 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 t d T B tesi d T τ τ ϕ τ τ ∫ = ∫
  • 11. 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).
  • 12. 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)
  • 13. 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
  • 14. 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).
  • 15. 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.
  • 16. 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.
  • 17. 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
  • 18. 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.
  • 19. 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.
  • 20. 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.
  • 21. 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.
  • 22. 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 ( )n j j y y n= − ∑
  • 23. 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.
  • 24. 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.
  • 25. 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
  • 26. 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.
  • 27. 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.
  • 28. 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.
  • 29. 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.
  • 30. 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
  • 39. 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,
  • 40. 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),
  • 41. 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);
  • 42. 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;
  • 43. 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))
  • 44. 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;
  • 45. 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
  • 46. 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