26 Kasım 2013 Salı

matlab da ekg_analizi

% ERDEM TUNCER  close all

clear all
clc
%Sinyalin Matlab Ortamina Alinmasi  hamsinyal=load('ecg okey.txt');
plot(hamsinyal); title('Ham Sinyal');

% DC Bilesenlerin Atilmasi  dcsizsinyal=(hamsinyal-mean(hamsinyal));

plot(dcsizsinyal);
 
title('DC Bilesenleri Atilan Sinyal');

% Filtre

% 10 point avarage filter
 
 
B=(1/10)*ones(1,10);

A=1;
freqz(B,A);
 
title('10 Point Moving Avarage Filtre');


avaragefiltrelisinyal=filter(B,A,dcsizsinyal);

plot(avaragefiltrelisinyal)
 
title('Moving Avarage (Low Pass) Filtreden Gecmis Sinyal');


% Comb Filter

% 60Hz sebeke gurultusunu ve harmoniklerini bastiran filtre
 
 
B=conv([1 1],[0.6310 -0.2149 0.1512 -0.1288 0.1227 -0.1288 0.1512 -0.2149 0.6310]);

A=1;

freqz(B,A);
 
title('Comb Filter');


comb=filter(B,A,avaragefiltrelisinyal);

plot(comb)
 
title('(60Hz ve Harmoniklerini Bastiran) Filtreden Gecmis Sinyal');

t=find(comb(1:length(comb),1)>500);
 
degerler=comb(t);% comb un yatayda t degerlerıne karsılık gelen sayısal degerlerı ver(dikeydekı degerleri verdı yanı)
plot(degerler) title('QRS sinyalinin Peak Değerleri')


[pks,locs] = findpeaks(degerler);
plot(degerler);hold on; plot(locs,pks,'g');title('Peak değerleri işaretlenmiş QRS siyali ');hold off
beat_count=0; for k=2:length(degerler)-1

if(degerler(k)> degerler(k-1) & degerler(k) > degerler(k+1) & degerler(k) >1 )
disp('peak founded')

beat_count= beat_count+1;
 
end
end

beat_count