Documente Academic
Documente Profesional
Documente Cultură
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
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).
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
Achiziție de semnale
1. Fără aplicarea filtrelor FTJ și FTS
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.
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
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(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;
ninterv=100;
[h, intervm] = hist (s, ninterv);
% Afişare Histogramă
figure(1); subplot(312); plot(intervm,h); grid; axis tight; title('Histograma semnal EKG');
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
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
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');
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
% 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;
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
%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));
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
fs = 200;
len = length(s);
t= [0: len-1]/fs;
%s= filter(ones(1,11),[1 zeros(1,7)],s);
%/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
% 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);
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