Sunteți pe pagina 1din 28

Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,

Maciuca Daniel

Achiziția și procesarea unui semnal EKG (picior)

-proiect ici (Inteligență Computațională Integrată)-

Coordonator: Marius-Dan Zbancioc


Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Sistemul MP este un sistem de achiziții de date care îndeplinește multe dintre funcțiile pe
care le îndeplinește un sistem care înregistrează graficele sau un sistem care vizualizează date,
dar este superior dar este superior acestor dispozitive prin faptul că depășește limitele fizice
întâlnite frecvent (cum ar fi lățimea sau viteza hârtiei).Sistemul de achiziții de date MP(MP150
sau MP100) este inima sistemului MP. Unitatea MP primește semnale de intrare și le transformă
în semnale digitale care pot fi procesate cu computerul.
Sistemele MP pot fi utilizate pentru o gamă largă de aplicații, inclusiv:
 Hemodinamica cardiovasculara Respirația provocata pletismografie
 ECG: Cardiologie Exercițiu Fiziologie Psihofiziologie
 EEG: Interfațarea electroencefalogramei cu funcția pulmonară a echipamentului existent
 EMG: Electromiogramă Monitorizarea la distanță a farmacologiei in vitro
 Studiile EOG / Eye Movement Laser Doppler Sleep

MP150 STARTER SYSTEM


Sistemul MP150 include:
 Unitatea de achiziție a datelor: MP150A-CE
 Modul de interfață universal: UIM100C
 Comutator Ethernet (pentru Ethernet furnizat de utilizator
 card sau adaptor): ETHSW1
 Transformator: AC150A
 Cabluri: CBLETH1 (2)
 Software-ul AcqKnowledge®:
 ACKv3.7 pentru PC (Windows) sau
 ACKv3.7 pentru Mac disponibil în trimestrul III 2001
Noul sistem de colectare a datelor de mare viteză MP150 utilizează cele mai noi tehnologii
Ethernet. MP150 este compatibil cu orice PC sau Macintosh compatibil Ethernet (DLC).
Accesarea a mai multor MP150 legate in rețea ajută la o mai buna conexiune intre calculatoare.
Poate înregistra mai multe canale cu rezoluții diferite pentru a maximiza capacitatea de stocare a
informației. Poate înregistra la viteze de 400kHz.
Pentru cea mai bună performanță posibilă, conectați sistemul MP numai la portul Ethernet al
computerului.

MP150A-CE Data Acquisition Unit Block Diagram


MP150 are un microprocesor intern pentru a controla achiziția de date și comunicarea cu
calculatorul. Există 16 canale de intrare analogice, două canale analogice de ieșire, 16 canale
digitale care pot fi utilizate fie pentru intrare, fie pentru ieșire, și o intrare de declanșare externă.
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Liniile digitale pot fi programate ca intrări sau ieșiri și funcționează în blocuri cu 8 canale.
Blocul 1 (Liniile de la 0-7 de Intrare/Ieșire) pot fi programate fie toate ca intrări, fie toate ca
ieșiri, independent de blocul 2 (Liniile de la 8-15 de Intrare/Ieșire).

Parametrii sistemului MP 150:


Intrări analogice
 Număr de canale: 16
 Tensiunea de intrare: +-10V
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

 Impedanța de intrare: 1M(ohm)


Ieșiri analogice
 Număr de canale: 2
 Tensiunea de ieșire: +-10V
 Impedanța de ieșire: 100(ohm)
Specificații MP150
 Memorie Interna MP: 200K(probe/sec),400K(in totalitate)
 Memorie PC: 200K(probe/sec),400K(in totalitate)
 Dimensiune Buffer: 6M(probe)
 Tipul de transmisie: Internet(serial:RS422-800K biți/sec)
Diferența dintre MP150 si MP100 la proiectare este ca MP 150 suporta interfața de internet
iar MP100 suporta interfața prin USB.
MP150 se poate conecta cu diferite module, de exemplu:
 ECG100C – Modul de Amplificare Electrocardiograma
 UIM100C Modul de interfața universal
 TSD111 Traductor de lovire calcai/deget picior, si altele.
MP100 se diferențiază de MP150 doar prin conversie.
Modulul amplificator de electrocardiogramă (ECG100C) este un singur canal, un câștig
mare, o intrare diferențială, amplificator biopotențial conceput special pentru monitorizarea
activității electrice a inimii și pentru utilizarea în următoarele aplicații:
 Electrocardiograme convenționale (ECG cu 12 conductoare)
 Măsurarea potențialului triunghiului Einthoven (3-plumb ECG)
 Măsurarea ECG pe plan transversal (V1 până la V6)
 Măsurarea vectorului cardiac
 Investigațiile haosului (ritmul cardiac variabilitate)
 Analiza aritmiei cardiace
 Exercitarea studiilor de fiziologie
Modulele sunt presetate din fabrică pentru opțiuni de decupare de 50 Hz sau 60 Hz pentru a
se potrivi cu frecvența liniei de alimentare pe perete a țării destinație. Setarea corectă reduce
zgomotul de la semnalele de interferență atunci când filtrul notch este atașat. În general,
frecvența liniei de alimentare pe perete este de 60 Hz în Statele Unite și 50 Hz în cea mai mare
parte a Europei.
ECG100C include un filtru trece-sus care este utilizat pentru a stabiliza linia de bază ECG.
Când comutatorul HP este setat la 1.0Hz, amplitudinile undei P și T vor fi reduse într-o
oarecare măsură, dar unda QRS va fi practic neschimbata.
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Undele sunt deflexiuni pozitive sau negative cu parametri bine definiţi: morfologie, sens,
amplitudine, durată, ax electric.
Undele situate deasupra liniei izoelectrice sunt numite unde sau deflexiuni pozitive.Cele
situate sub linia izoelectrică sunt denumite unde negative.Undele de pe o ECG sunt:
 unda P – semnifică depolarizarea atrială;
 undele complexului qRs – semnifică depolarizarea ventriculară
 unda T - semnifică repolarizarea ventriculară;
 unda U (apare rar) - semnifică repolarizarea finală ventriculară

Segmentul este o linie izoelectrică şi reprezintă porţiunea de la sfârşitul unei unde până la
începutul undei următoare. Pe un traseu ECG se înscriu 3 segmente: segmentul Pq, segmentul
ST, segmentul TP.
Răspuns in frecventa:
 Filtru trece jos: 35Hz, 150Hz
 Filtru trece sus: 0.05Hz, 1.0Hz
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

ETAPA 2

In poza alăturată avem prezentat modul de aplicare a


electrozilor la EKG picior. (deviația standard)
Ei trebuie poziționați pe cat posibil cat mai aproape de încheieturile pacientului preferabil
pe proeminente osoase (nu pe mușchi – pentru a scădea posibilitatea unor interferente). Daca
se montează mai sus, trebuie menționat acest lucru pe EKG. Daca avem doar electrozi din
aceia de unica folosință, se montează pe zona de la încheietura mâinii (deci pe interiorul
mâinii) si pe partea interioara a piciorului, in zona de imediat de deasupra fluierului
piciorului. In concluzie, vom folosi 2 electrozi amplasați pe picioare, si unul pe mana
dreapta.

Achiziție de semnale
1. Fără aplicarea filtrelor FTJ și FTS

Fără aplicarea filtrelor, semnalul achiziționat este afectat de zgomote.


Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

2. Fără aplicarea FTS, s-a aplicat FTJ de 35Hz


Datorită aplicării filtrului trece jos de 35 Hz, semnalul achiziționat devine mai clar fără zgomotul
de înaltă frecvență.

3. Cu aplicarea FTS de 0.5 Hz, fără aplicarea FTJ

Semnalul achiziționat este afectat de zgomotul de înaltă frecvență.


Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

4. Cu aplicarea FTS de 0.5 Hz, cu FTJ de 35 de Hz


Datorită filtrelor aplicate, semnalul este calitativ fiind eliminate zgomotele.

5. Semnalul achiziționat cu artefacte de contracții musculare

În semnalul dat se observă influenta contracțiilor musculare asupra semnalului EKG.


Modulele amplificatoare biopotențiale / transductoare din seria 100C sunt canale unice, intrări
diferențiale, amplificatoare liniare cu offset reglabil și câștig. Aceste module sunt folosite pentru
amplificarea semnalelor de tensiune mai mici provenind de la electrozi și traductoare brute (în
mod obișnuit mai puțin de ± 0,01 volți).
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

ETAPA 3
Electrocardiograma (ECG sau EKG) este o înregistrare a activității electrice a fibrelor
musculare ale inimii. Fiecare contracție a miocardului este urmarea unei excitații electrice care
provine de la nodulul sinusal și transmis musculaturii inimii.

Reprezentare schematică a unui ECG normal


Parametrii care se analizeată pe traseul ECG sunt unda P, complexul QRS, unda T şi
unda U.
Studiul ECG are la bază descrerea abaterilor liniei traseului de la linia izometrică, adică
deflexiunile (undele). Undele dau o caracteristică in timp (secunde).
Undele au urmatoarele denumiri:
 Q atâta timp cât aceasta nu este precedată de o undă pozitiva, ea se numește prima
undă negativă
 R prima undă pozitivă
 S este prima undă negativă dupa unda R
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Daca aceste unde au o amplitudine mare, ele se notează cu majuscule, celelalte cu litere
mici. În majoritatea derivaţiilor, complexul de depolarizare ventriculară are forma qRs; în aVR
este predominant negativ, iar în V1 şi V2 de forma rS.
Ce informatii ne poate da o electrocardiograma?
1. Aritmii sau tahiaritmii
2. Existenta unor patologii de conductibilitate
3. Fibrilatia si flutter-ul
4. Infarctul
5. Hipertrofia
6. Dezechilibrul electrolitic
7. Monitorizarea eficientei unui tratament medicamentos

Perioada unui semnal ECG poate defini ritmul cardiac. În general, acesata este exprimată pe
interval de 60 de secunde. O valoare normală a BPM-ului (Beats Per Minute) este încadrată între
60-99 BPM. Daca această valoare depășește 100, poate fi determinată de boli, stări emoționale
sau depunerea unui efort fizic foarte mare.
Acest parametru BPM poate fi determinat utilizând:
𝑁

𝐶𝑥𝑥[𝑘] = ∑ 𝑥𝑖 ∙ 𝑥𝑖+𝑘
𝑖=1

În graficul de mai sus avem prezentată o figură în care se observă determinarea funcției de
autocorelație. Valoarea lui N poate fi atât de mare încât să cuprindă minim 2-3 perioade ale
semnalului.
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

%Pasul numarul 1 : Calculam functia de autocorelatie


N = 900; %N=600; poate avea si valoarea mai mica, dar nu mai mica de 2 sau 3 perioade T,
pentru ca nu mai putem determina semnalul
step = fs/2; j=1; %pas de ½ secunde, fs=200Hz (frecventa de esantionare)
Cxx = zeros(1,N);
for k = 0 : N-1
Cxx(k+1)=0;
for n = 1 : N-k
Cxx(k+1) = Cxx(k+1)+ x(n)*x(n+k);
end

end
figure(1); subplot(312); plot(Cxx); grid; axis tight; title('Functie autocorelatie');
%se scoate din primul maxim dominant valoarea in bpm, perioada batailor pe minut
Tmin = 60/200*fs; %valoarea minima a perioadei/in esantioane (200 reprezinta bataile maxime
pe care le poate atinge inima unui sportiv)
Tmax = 60/40*fs;%bpm este in intervalul [40...200] T = [0.3, 1.5] secunde (40-45 reprezinta
bataile minime la care poate ajunge inima unui om in timpul somnului)
[maxCxx, poz] = max(Cxx(Tmin:Tmax)); poz = poz+Tmin-1;
figure(1); subplot(312); hold on; plot(poz,maxCxx,'or'); hold off;
bpm(j) = 60/(poz/fs); j=j+1;
pause(0.5);

figure(1); subplot(313); plot(bpm); grid; axis ([1 length(bpm) 0 max(bpm)*1.1]); title('Ritm


cardiac');
Pentru N = 900;

În graficul de mai sus avem prezentată determinarea unui ritm cardiac


Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Determinarea liniei izometrice


Această linie reprezintă componenta de curent continuu a semnalului, din punct de vedere
electric. Se mai numește si linie izoelectrică. Vom folosi pentru detereminarea liniei izometrice o
funcție de mediere (mean(s);) în vederea extragerii mediei semnalului. Daca suprafața valorilor
aflate deasupra liniei izometrice este egală cu cea a valorilor care sunt dedesubt, atunci utilizarea
valorii medii este cea corectă.

Figura in care se observă determinarea liniei izometrice utilizând funcția de mediere


Program Matlab:
%Pasul nr 1 : afişarea semnalului achiziționat cu linie izometrică “s”

figure(1); subplot(311); plot(t,s); grid; axis tight; title ('Semnale EKG intrare');
%hold on; plot(t(1:end-pozc+1), sf(pozc:end),'r'); hold off;
%hold on; plot (t, sf, 'r'); hold off;

line([t(1) t(end)], [ isoline isoline], 'Color', 'r', 'LineWidth', 2); hold off;

Se observă ca trebuie să abordăm altfel această determinare a liniei izometrice.


Histograma ne arata unde sunt cele mai multe valori, in acest caz fiind prezente pe linia
izometrica în valoarea 0,5.
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Figură in care se observă determinarea liniei izometrice utilizând egalizarea de histogramă


Program Matlab:
lens = length(s);
t = [1:lens]/fs;

ninterv=100;
[h, intervm] = hist (s, ninterv);

% Afişare Histogramă
figure(1); subplot(312); plot(intervm,h); grid; axis tight; title('Histograma semnal EKG');

%Determinarea maximului Histogramei


[maxh maxp] = max (h);
isoline = intervm(maxp);
figure(1); subplot(312); hold on; plot(intervm(maxp), maxh, 'or'); hold off;
subplot(3112); hold on;
line([t(1) t(end)], [ isoline isoline], 'Color', 'r', 'LineWidth', 2); hold off;

Tabelul parametrilor semnalului EKG-estimarea duratelor P,QRS,T


Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Durata
Nr. Mostra Durata Unda P Durata Unda T
Q-R-S
1. 0.115s 0.095s 0.245s
2. 0.115s 0.085s 0.180s
3. 0.125s 0.096s 0.185s
4. 0.165s 0.085s 0.200s
5. 0.150s 0.080s 0.185s
6. 0.140s 0.075s 0.200s
7. 0.110s 0.075s 0.210s
8. 0.145s 0.090s 0.170s
9. 0.120s 0.080s 0.185s

Unda P – depolarizare atrială


Are o amplitudine de 0, 10 – 0, 25 mV, aceasta având valoare maximă în DII.Durata este de
0,110 – 0, 165 sec.
Complexul QRS are o amplitudine de 1 – 1, 5 mV, minim 0,5 mV în DI, DII, DIII și minim 0,1
mV în derivațiile precordiale.Durata complexului este de 0,08 – 0,10 sec.
Unda T – repolarizarea ventriculară
Are o amplitudine cuprinsă între o treime (1/3) și jumătate (1/2) din amplitudinea undei R.Durata
este de 0,13 – 0,30 sec.
Intervalul PR –măsurat de la începutul undei P pâna la începutul complexului QRS, durata unui
interval normal fiind cuprinsă în intervalul 0,12-0,20 sec.
Intervalul QT-măsurat de la începutul undei Q pâna la finalul undei T, durata unui interval
normal fiind cuprinsă în intervalul 0,36-0,44 sec, iar orice valoare mai mare de 0,5 sec este
considerată periculoasă.
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Etapele 4 si 5
Adaugarea zgomotului peste semnalele achiziționate și metode de filtrare
Zgomotul uniform este un semnal aleator care are o distribuție de probabilitîți constantă
în timp și o amplitudine cuprinsă între două valori constante. Se utilizează funcția de generare a
valorilor aleatoare a mediului de lucru. In Matlab folosim funcția rand(). Facem o scădere cu
numarul 0.5 pentru a obține un semnal uniform în intervalul (0.5, -0.5), pentru a avea semnal
pozitiv si negativ. Generăm un semnal cu zgomot uniform de amplitudine raportată la valoarea
de vârf la vârf a semnalului achiziționat. Folosim un FTJ pentru extragerea semnalului util sau un
FTS pentru extragerea zgomotului.
Adaugarea de zgomot uniform;
%% adaugare zgomot uniform
% se generează cu functia random, și vor rezulta jumătate din valori negative și jumătate pozitive
zgu = (rand(len,1)-0.5);
%figure(1); subplot(312); plot(zg50(1:fs));
procent = 0.10;
Avv = max(s)-min(s);
s_zg = s + zgu * procent * Avv;
figure(1); subplot(312); %plot(t,s_zg); title('Semnal cu zgomot
uniform');plot(t(1:3*fs),s_zg(1:3*fs)); title('Semnal cu zgomot uniform');
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Adaugare de zgomot de tip 50 Hz;


%% reesantionare semnal
fs_new = fs*5;
s = reesantionare(s,fs,fs_new);
len = length(s);
t = [0:len-1]/fs_new;
fs = fs_new;
%figure(1); subplot(312); plot(t,s); title('Semnal reesantionat');
%% generare zgomot 50Hz
%la o frecvență de 200 hz(semples/sec) nu va arăta bine in 4 puncte, si nu va semăna cu sinusul,
deci reeșantionam semnalul de la intrare(adăungam în semnal puncte care nu există)=>
fs=200>fsnew=1000hz(de 5 ori mai mare decât inițialul)
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

zg50 = sin(t*2*pi*50);
%figure(1); subplot(312); plot(zg50(1:fs));

procent = 0.5;
s_zg = s + zg50*procent*(max(s)-min(s))/2;figure(1); subplot(312); plot(t,s_zg); title('Semnal cu
zgomot 50Hz');

Adaugarea de zgomot Gauss;


[fname, fpath] = uigetfile('*.txt','Open EKG file...');
fid = fopen(strcat(fpath,fname),'r');
s = fscanf(fid,'%f',inf);
fclose(fid);
s = s-mean(s);
len = length(s);
fs=200;
t = [0:len-1]/fs;
figure(1); subplot(311); plot(t,s); title('Semnal EKG intrare');
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

%generarea zgomotului Gauss folosind functia wgn


zgauss=(wgn(len,1,0))./20;
figure(1); subplot(312); plot(t,zgauss); grid; axis tight; title('Zgomot Gauss');

%afisarea semnalului cu zgomot Gauss

szgauss=s+zgauss;
figure(1); subplot(313); plot(t,szgauss); grid; axis tight; title('Semnal cu Zgomot Gauss');
%Histograma zgomotului Gauss
%pentru verificare la zgomotul gaussian trebuie sa avem o forma de undă în formă de semnal
trece sus/clopotul lui gauss/sub forma de sinus
[h_zgauss, interv] = hist(zgauss, 50);
figure(3); plot(interv,h_zgauss); grid; axis tight; title('Histograma Gauss');
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Etapa 5. Metode de filtrare a semnalelor


- Precizarea a 3 metode de filtrare a zgomotului (descrierea metodei, afisarea
rezultatului de filtrare);
- Determinarea raportului (S/N) inainte si dupa operatiunea de filtrare

Filtrare Zgomot Uniform;


%% filtrare zgomot uniform
tip_filtru=1;
if(tip_filtru==1) %filtru mediere clasic
%filtrul de mediere dă rezultate mai bune decât un filtru de performanță deoarece este mai bine
conturat
N = 5;
sf = filter(ones(1,N)/N, [1 zeros(1,N-1)],s_zg);
figure(1); subplot(313); %plot(t,sf); title('Semnal filtrat');
plot(t(1:3*fs),sf(1:3*fs)); title('Semnal filtrat');
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

% se observa la inceput cum semnalul încă lucrează apoi este filtrat cum trebuie
end
if(tip_filtru==2) %filtru mediere cu recurenta
%filtrul de recurență ar avea rezultate mai bune la valoarea de 35,dar nu la fel de bune ca filtrul
de mediere tot la aceeași valoare
N=5;
[B,A] = butter(N,45/(fs/2),'low');
sf = filter(B,A,s_zg);
%sf(1:fs*2)=0; pentru scoaterea celor 2 secunde de lucru
figure(2); subplot(313); %plot(t,sf); title('Semnal filtrat');
plot(t(1:3*fs),sf(1:3*fs));
end
%% estimare raport semnal zgomot inainte de filtrare---pentru a putea spune daca un semnal este
mai bun sau mai rau
% raportul de 1/procent nu este tocmai corect, dar nici departe de valoarea adevărată
RSN_inainte = 1/procent;
disp(sprintf('Raport semnal zgomot (inainte filtrare): %.2f',RSN_inainte));
%% estimare raport semnal zgomot dupa filtrare
% funcția care face derivata de ordin 1 in matlab este funcția diff(pentru ordin 2 folosim
diff(diff) )
zg_r = diff(sf); %FTS derivata de ordin I
figure(2); subplot(311); plot(t(1:end-1),zg_r);
[h, int] = hist(zg_r,100);
figure(2); subplot(312); plot(int,h); %bar(int,h);
[maxh poz] = max(h);
figure(2); subplot(312); hold on; plot(int(poz),maxh,'or');
%calcul histograma cumulativa
% facem o cumulare de histogramă, și ne interesează doar valorile cuprinse între 5-95(prag
inferior și prag superior de separare)
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

hc = cumsum(h); hc = hc/hc(end);
poz1 = find(hc >= 0.1); poz1=poz1(1); %cautare prag_inferior de separare
poz2 = find(hc >= 0.9); poz2=poz2(1); %cautare prag_superior de separare
figure(2); subplot(312); plot(int(poz1),h(poz1),'xr'); plot(int(poz2),h(poz2),'xr');
hold off;

figure(2); subplot(311); hold on;


line([t(1) t(len-1)],[int(poz1) int(poz1)],'Color','r');
line([t(1) t(len-1)],[int(poz2) int(poz2)],'Color','r');
hold off;

Avv_zg_r = int(poz2)-int(poz1);
Avv_sf = max(sf)-min(sf);
RSN_dupa = Avv_sf / Avv_zg_r;
disp(sprintf('Raport semnal zgomot (dupa filtrare): %.2f',RSN_dupa));
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

% vedem câte un x pe fiecare prag de separare


%trebuie sa avem cele 2 linii un pic mai apropiate, astfel încât să cuprindem semnalul, dar totuși
să nu avem spațiu între semnal și linie
% setăm pragurile între 10% si 90% pentru ca cele 2 linii să cuprindă semnalul cât mai bine
% avv(amplitudinea vârf șa vârf) este diferența dintre cele 2 praguri

%Calculul rapoartelor semnal/zgomot ianinte si dupa filtrare:

disp(sprintf('Raport semnalzgomot inainte de filtrare): %.2f', RSN_inainte));


disp(sprintf('Raport semnal zgomot dupa filtrare): %.2f', RSN_dupa));

Raport semnalzgomot inainte de filtrare): 2.33


Raport semnal zgomot dupa filtrare): 375.33

Filtrare Zgomot de tip 50Hz;


%% filtrare zgomot 50Hz
N=3;
[B,A] = butter(N,[49 51]/(fs/2),'stop');
sf = filter(B,A,s_zg);
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

%sf(1:fs*2)=0;
figure(1); subplot(313); plot(t,[zeros(1,2*fs-1) sf(2*fs:end)]);
title('Semnal filtrat');
% la estimarea raportului semnal/zgomot vedem ce zgomot avem la intrare și extragem doar
sinusul din el cu un filtru trece bandă invers, pentru a rămâne zgomotul
%% estimare raport semnal zgomot inainte de filtrare
[B,A] = butter(N,[49 51]/(fs/2)); %FTB
zg_e = filter(B,A,s_zg);
figure(2); subplot(311); plot(t,zg_e); title('Zgomot 50Hz extras din semnalul initial');
Avv_zg = max(zg_e(2*fs:end)) - min(zg_e(2*fs:end));
Avv_s = max(s_zg) - min(s_zg);
RSN_inainte = Avv_s / Avv_zg;
disp(sprintf('Raport semnal zgomot (inainte filtrare): %.2f',RSN_inainte));

%% estimare raport semnal zgomot dupa filtrare


Avv_sf = max(sf(2*fs:end))-min(sf(2*fs:end));
[B,A] = butter(N,[49 51]/(fs/2)); %FTB
zg_r = filter(B,A,sf); % ce extragem=zgomot rămas( zg_r)
figure(2); subplot(312); plot(t,zg_r); title('Zgomot 50Hz ramas dupa filtrare');

Avv_zg_r = max(zg_r(3*fs:end))-min(zg_r(3*fs:end));
RSN_dupa = Avv_sf / Avv_zg_r;
disp(sprintf('Raport semnal zgomot (dupa filtrare) : %.2f',RSN_dupa));
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

% cu cât este mai largă banda, cu atât pierdem mai multă informație utilă, deci ar fi indicat un
interval 48-52 sau chiar 49-51, dar având grijă că la o bandă mai îngustă există posibilitatea de a
nu prinde tot semnalul, și să mai scăpam din zgomot

Eliminare artefacte;
% artefactele la EKG sunt obținute din respirația sau miscarea brațelor
%artefactul=o variație pe care o are semnalul---ne încurcă=nu putem să punem un prag, să avem
un reper, deci mai bine eliminăm anvelopa
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

[fname, fpath] = uigetfile('*.txt','select EKG ...');


fid = fopen(strcat(fpath,fname),'r');%a apent
s = fscanf(fid,'%f',inf);%inf pana la capatul fisierului
%s = -s;

fs = 200;
len = length(s);
t= [0: len-1]/fs;
%s= filter(ones(1,11),[1 zeros(1,7)],s);

figure(1); subplot(211); plot(t,s); title('semnal ekg intrare');

%/N=3; ft = 0.5/(fs/2);
%[B,A] = butter(N,ft,'high');
%sf = filter(B,A,s);
%figure(1); subplot(212); plot(t,sf); title('fts');
% extragere anvelopa –

% un filtru trece sus face semnalul mai stabil---va elimina joasa frecvență, și va rămâne doar ce
este peste 0.5 Hz la EKG (respectiv 10 Hz la EMG)
% la filtrul trece sus, este eliminată unda P deoarece este o componentă de joasă frecvență, ceea
ce nu este ok, deci o să folosim un FTJ

N=3; ft = 3/(fs/2); %0.5-1hz pt ekg, 3-5hz pt EMG


[B,A] = butter(N,ft,'low');
sf = filter(B,A,s);
figure(1); subplot(211); hold on; plot(t,sf,'r','linewidth',2); hold off;
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

% dacă creștem ordinul filtrului, se dublează decalajul anvelopei, deci vrem să vedem cât este
deplasat semnalul
% funcția de corelație ne va da și o informație--cât de mult trebuie sa deplasez anvelopa
Facem deplasarea pe maxim 2 secunde-400 valori
X=primul semnal
Y=al doilea semnal
Deplasăm al doilea semnal în funcție de câte esantioane are(k)
Când k este 0, cele 2 semnale nu sunt deplasate deloc( in matlab coeficientul 0 nu există)
N = 10*fs;
Cxy = zeros(1,N);
for k = 0 : N-1
for n = 1 : len-N+1
Cxy(k+1) = Cxy(k+1) + s(n)*sf(n+k);
end
end
figure(1); subplot(212); plot(Cxy);
[v poz]= max(Cxy);

figure(2);subplot(211); plot(t(1:len-poz+1),s(1:len-poz+1)); hold on;


plot(t(1:len-poz+1),sf(poz:len),'r','linewidth',2);
hold off
s2 = s(1:len-poz+1)-sf(poz:len);
figure(2); subplot(212); plot(t(1:length(s2)),s2);
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Raport semnal/zgomot

FTS_0.5
Raport semnalzgomot inainte de filtrare): 2.33
Raport semnal zgomot dupa filtrare): 375.33

FTS_0
Raport semnalzgomot inainte de filtrare): 2.96
Raport semnal zgomot dupa filtrare): 3253.88
Fara FTS cu FTJ_35 Hz
Raport semnalzgomot inainte de filtrare): 2.78

Raport semnal zgomot dupa filtrare): 4203.18

Fara FTS cu FTJ_35 Hz cu artefact


Raport semnalzgomot inainte de filtrare): 2.76
Raport semnal zgomot dupa filtrare): 1026.74
Fara FTS cu FTJ_35 Hz cu artefact2
Membri grupa: Ciocîrlan Vasile-Cristian, Păstrăvanu Marius-Bogdan, Saracuța Veniamin, Pârjol Marian,
Maciuca Daniel

Raport semnalzgomot inainte de filtrare): 2.93


Raport semnal zgomot dupa filtrare): 817.03
Fara FTS_fara FTJ
Raport semnalzgomot inainte de filtrare): 2.44
Raport semnal zgomot dupa filtrare): 365.11

S-ar putea să vă placă și