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

3 yorum:

  1. Erdem bey yazınız için teşekkürler.

    Rica etsem ham veriyi de (ecg okey.txt) paylaşabilir misiniz?

    İyi çalışmalar.

    YanıtlaSil
  2. erdem bey acaba gürültülü ekg sınyalını olusumu ve bunu gıdermek ıcın fıltre tasarımı konusnda yardımcı olurmusunuz

    YanıtlaSil
  3. Yazınız için teşekkürler.

    Rica etsem ham veriyi (ecg okey.txt) paylaşabilir misiniz?

    YanıtlaSil