[Matlab] Pan Tompkins Algoritması Kullanılarak EKG’de QRS Complex Tespiti ve Ritm Analizi

Biomedical Signal Analysis dersinde Timur Düzenli ve Salih Aslan ile beraber yaptığımız bir proje bu. EKG verileri üzerinden QRS Complex kısımlarının tespitinden bahsedeceğim. Öncelikle nedir ve neden önemlidir buna değinelim.

Çoğumuzun bildiği üzere EKG (ECG – Electrocardiogram) kalp aktivitelerinin elektriksel olarak kaydıdır. Electrocardiograph ile ölçülerek kaydedilir.

EKG analiz edilerek kalp hakkında oldukça detaylı bilgiler elde edilebilir. Tıp okumadığım için çok detaylı bilemem tabii ki. Fakat EKG sinyalinin birazdan bahsedeceğim kısımlarının zamanlaması hastalıklar hakkında oldukça yararlı bilgiler sağlamaktadır.

Tipik bir EKG sinyali aşağıdaki şekilde gösterilebilir.

EKG

Burada görüleceği gibi EKG sinyali belirli tipik kısımlar içerir. Bunlar P,Q,R,S ve T kısımlarıdır. Hepsi kalp hakkında önemli bilgiler taşır. Bu yazıda, sinyalde QRS Complex’in yerinin bulunmasından bahsedeceğim. Bu bilgi önemlidir çünkü QRS Complex’in kaç milisaniye sürdüğü çıplak gözle anlaşılamaz.

Konuya girmeden önce şundan da bahsetmek isterim. Doktorların, ellerine gelen EKG kaydına bakarak karar vermesinde bahsedeceğim konu oldukça önem taşır. EKG sinyalleri elektriksel olarak zayıf sinyaller olduğu için kaydedilmesi ve çevre gürültülerden arındırılması işi oldukça zahmetlidir. Demek istediğim, ham bir EKG kaydından hiç bir doktor hiç bir teşhis koyamaz. O şeritteki net ve anlaşılır EKG’nin nasıl o hale geldiğini ele alacağız. Fakat tüm aşamaları koca bir kitap yapan bu analizin sadece küçük bir kısmı bu yazıca mevcut.

Analiz için kullanacağım önceden kaydedilmiş EKG verileri elimde mevcut. 4000 örnekten oluşan veriyi şuradan alabilirsiniz.

Analize başlayalım,

close all
clear all
clc
 
%% Degisken ve Sabitlerin Tanimlanmasi
fs=200; % sample rate
 
%% Sinyalin Matlab Ortamina Alinmasi
hamsinyal=load('ECG3');
plot(hamsinyal);
title('Ham Sinyal');
figure
Ham Sinyal

Ham Sinyal

Görüldüğü gibi sinyal oldukça fazla gürültü içeriyor. Hem yüksek frekanslı hem de şebekeden kaynaklanan ek bileşenler sinyale karışmış durumda. Öncelikle sinyali DC sıfır seviyesine çekelim

%% DC Bilesenlerin Atilmasi
dcsizsinyal=(hamsinyal-mean(hamsinyal));
plot(dcsizsinyal);
title('DC Bilesenleri Atilan Sinyal');
figure
DCsiz Sinyal

DCsiz Sinyal

Şimdi de sinyalden yüksek frekanslı gürültüleri temizleyelim. Bunun için bir alçak geçiren (low pass) filtre tasarlayıp sinyali bu filtreden geçirmemiz gerekli. Filtre tipi olarak 10 point avarage filtre kullanalım.

%% Filtre
% 10 point avarage filter
B=(1/10)*ones(1,10);
A=1;
freqz(B,A);
title('10 Point Moving Avarage Filtre');
figure
avaragefiltrelisinyal=filter(B,A,dcsizsinyal);
plot(avaragefiltrelisinyal)
title('Moving Avarage (Low Pass) Filtreden Gecmis Sinyal');
figure
Low Pass Filtre

Low Pass Filtre

Low Pass Cikisi

Low Pass Cikisi

Yüksek frekanslı gürültülerin azaldığını görebiliriz. Fakat hala kusursuz değil. Şimdi de düşük frekanslı gürültüleri yok etmek için bir yüksek geçiren (high pass) filtre tasarlayıp sinyali bu filtreden geçirelim. Bunun için de Derivative Based filtre oluşturacağız.

%% Derivative Based Filter
B=(1/1.0025)*[1 -1];% 1.0025 normalizasyon degeri
A=[1 -0.995];
freqz(B,A);
title('Derivative Based Filter');
figure
derivativefiltrelisinyal=filter(B,A,avaragefiltrelisinyal);
plot(derivativefiltrelisinyal)
title('Derivative Based (High Pass) Filtreden Gecmis Sinyal');
figure
Derivative Filtre

Derivative Filtre

Derivative Cikisi

Derivative Cikisi

Sinyalden atmamız gereken bir de 60Hz’lik şebeke gürültüsü var. Kayıt esnasında cihazın şehir şebekesinden kaptığı gürültü de sinyalle beraber kaydedilmiş durumda. Zaten bakıldığında çıplak gözle de görülebiliyor. Bu arada kullandığımız örnek yabancı bir kaynaktan olduğu için şebeke gürültüsü 60Hz. Bizim şebekemiz 50Hz. Onu da hatırlatayım.

60Hz’lik gürültüyü atmak için bir filtre tasarlanacak ve önceki filtreden çıkan sinyal bu filtreden geçirilecek. Önemli bir sorun da, şebekeden kapılan gürültünün yalnızca 60Hz değil aynı zamanda bunun harmonikleri olarak ortaya çıkması. Bu yüzden yalnızca 60Hz’i bastıran bir filtre işimiz görmeyecek. Bunun için 60Hz ve tüm harmoniklerini bastırmamızı sağlayacak bir Comb filtre tasarlamamız gerekir. Aşağıda yazdığım filtre katsayılarının nasıl bulunduğuna değinmeyeceğim, zira çok uzun mesele :) Zaten ben de hazır kullandım. Bulmaya çalışmak apayrı bir mesele.

%% 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');
figure
comb=filter(B,A,derivativefiltrelisinyal);
plot(comb)
title('Comb (60Hz ve Harmoniklerini Bastiran) Filtreden Gecmis Sinyal');
Comb Filtre

Comb Filtre

Comb Cikisi

Comb Cikisi

Çok kusursuz olmasa da sinyal işlenebilecek hale geldi. Şimdi ise fark alarak sinyaldeki en keskin tepeleri bulalım. Bunlar bize R noktalarını verecek. Ardından da bu R noktasının sağında ve solunda en düşük seviyedeki noktaları bulalım. Bunlar da Q ve S noktalarını verecek.

%% Differentiator
differentiatorcikisi=diff(comb);
 
%% Squaring Operation
kare=differentiatorcikisi.*differentiatorcikisi;
 
%% Moving Window Integrator
window=ones(1,30); % N=30 moving window
integral= medfilt1(filter(window,1,kare),10);
delay = ceil(length(window)/2);
integral = integral(delay:length(integral));
 
%% QRS Arama
max_h = max(integral);
thresh = 0.2;
poss_reg = integral > (thresh*max_h);
 
sol = find(diff([0 poss_reg'])==1);
sag = find(diff([poss_reg' 0])==-1);
 
 for i=1:length(sol)
    [maxdeger(i) maxloc(i)] = max( comb(sol(i):sag(i)) );
    maxloc(i) = maxloc(i)-1+sol(i); % offset ekle
    [mindeger(i) minloc(i)] = min( comb(sol(i):sag(i)) );
    %mindeger Q noktasini verir
    minloc(i) = minloc(i)-1+sol(i); % offset ekle
    % Q noktasi icin offset
 end
 
% minpozisyon=ones(1,4000)*-max(comb);
% minpozisyon(1,minloc)=max(comb);
maxpozisyon=ones(1,4000)*(-max(comb));
maxpozisyon(1,maxloc)=max(comb);
% maxpozisyon(1,sol)=max(comb);
% maxpozisyon(1,sag)=max(comb);
% maxpozisyon(1,minloc)=max(comb);
 
figure
% plot(comb(1:(length(comb)/4)),'b-')
plot(comb)
title('R noktalari belirlenmis sinyal');
hold on
% plot(minloc,mindeger,'r--')
plot(maxloc,maxdeger,'g-')
 
figure
plot(comb)
title('R noktalari isaretlenmis sinyal');
hold on
%plot(minpozisyon,'r') % Q baslangici
plot(maxpozisyon,'r')
legend('Comb Filtreden Gecen Sinyal','R');
R leri Birlestir

R leri Birlestir

R leri Isaretle

R leri Isaretle

Görüldüğü gibi QRS Complex’in yeri artık tam olarak bilinebiliyor. İstenen ölçümler buradan çıkarılabilir.

Bu arada sondan üçüncü Complex’de bir hata var. Algoritma burada hatalı sonuç veriyor. Gürültülerin kusursuz bir şekilde atılamamasından kaynaklanan bir hata söz konusu. P noktası olması gerekenden daha büyük olduğu için R olarak algılanmış ve bir hataya sebebiyet vermiş. Fakat sinyalin geri kalanı istediğimiz veriyi elde etmemiz için yeterli veriyi sağlıyor.

Şimdi elde ettiğimiz verilerden bazı sonuçlara ulaşmaya çalışalım. Girilen veride kaç adet beat (vuruş) bulunduğunu tespit edelim. R noktalarını tespit ettiğimize göre ve R noktası kadar vuruş bulunduğunu bildiğime göre kolaylıkla sonuca ulaşabiliriz.

%% Beat Sayisi
beat=length(maxloc)
heartrate=beat/(length(hamsinyal)/fs)

Cevap olarak şu sonuçları elde ediyoruz.

beat =

25
heartrate =

1.2500

Analiz sırasında P noktalarından birisi de R olarak algılanmıştı. Aslında beat sayısı 24 olmalıydı.

Şimdi de RR aralığının ortalamasını bulalım.

%% RR Araligi Ortalamasi
ortalama=0;
for i=1:beat-1
    ortalama=ortalama+(maxloc(i+1)-maxloc(i)-1)/fs;
    u(i)=(maxloc(i+1)-maxloc(i)-1)/fs;
end
ortalama=1000*ortalama/beat
% ms cinsinden bulmak icin 1000 ile carpildi.

Sonuç olarak elde edilen çıktı,

ortalama =

745.8000

%% Standart Sapma
variance=var(u)*1000 %ms cinsinden

variance = 22.4692

QRS genişliklerinin tespiti için ise zaten bulmuş olduğumuz noktaların farkları alınabilir.

% QRS Genisligi
for i=1:beat
    qrs(i)=sag(i)-minloc(i)
end

Çıktısında da QRS genişliklerinin birbirine yakın değerde olduğu gözlenebilir.

Görüldüğü gibi hastalık teşhisi için canla başla çalışanlar yalnızca doktorlar değil :) Bizleri de unutmayın.

Related Posts
Leave a comment ?

87 Comments.

  1. yine oturmus temiz temiz yazmissin. takdir ettigim blogcu kardesim, buralara tekrar gelirsin umarim.

  2. Kendim de tilt+ denilen bir tür kalp rahatsızlığına sahip olduğum için belki bu konu çok ilgimi çekti. Bu anladığım kadarıyla MatLab diliyle mi yazılmış. Bir de hepsi bu kadar mı kodun. Son halinde doktorların işine yarayabilecek hale gelmiş mi? Şu anda kullanılan sistem bunun aynısı mı? Demek istediğim tıp cihazlarında da bu tür programlar kullanılıyor mu ? Yoksa farklı bir sistem mi var? Peki bu sonuçta üretilen kodun sıfır hatalı olduğundan nasıl emin olabiliyorsunuz. Sağlık şakaya gelmez çünkü..

  3. Buradaki kod yazının en başında da yazdığım gibi sadece Biomedical Signal Analysis dersinin bir projesi için yazdığımız kodlar. Herhangi bir profesyonel amaç gütmüyor. Sonucu hala kusursuz değil. Şu anda aletlerde kullanılan birçok değişik yöntem var. Pan Tompkins de bunlardan yalnızca biri. Cihazların içinde kullanılan kod direkt olarak matlab kodu olmayabilir. Bu durum kullanılan mikro kontrolcüye bağlı. Sinyal işleme açısından en etkili aracım Matlab olduğunu söyleyebilirim. Bir takım mikrokontrolcüler için matlab algorimasını doğrudan adapte edilebildiğini okumuştum ama açıkçası denemedim. Bu tarz bir donanımım da yok. Kodun sıfır hatalı olmadığını da yazıda belirtmiştim zaten. Önemli olan her bir belirleyici işaretin (p,q,r,s,t) sürelerini bilmek. Bunun için de tepe noktalarını kesin bilebilmek yeterli. Ana dediğim gibi gerçekten tertemiz bir sinyal elde etmek yukarıdaki ders projesini aşan bir konu. Vücuttan alınan sinyal genlik olarak çok küçük olduğu için ortam gürültülerinden çok etkileniyor. EEG gibi sinyaller daha da düşük genliğe sahip olduğu için onlarda durum daha da karmşıklaşıyor. Bize öğretilene göre en sağlıklı ölçümü EKG için kalbe en yakın, EEG için beyne en yakın yerden almak.Bu da cerrahi bir müdahale gerektirdiği için zor bir işlem. Dediğiniz gibi sağlık şakaya gelmez. Zaten kimse, bu kodu hastanemizde kendi EKG cihazımızı yapalım maksadıyla almaz. Alırsa da onun ciddiyetinden şüphe ederim. Bu sadece konuyu açıklamak ve genel anlamda bu işlemin nasıl yapıldığını göstermek üzere yazılmış bilgilendirici bir yazı. Sağlığın şakaya gelmeyeceğini doktoraların da öğrenmesi dileğiyle. Saygılar.

  4. Pardon. Sağlık şakaya gelmez sözümü yanlış anlamamışsınızdır umarım. Ben onu zaten var olan bir doğruyu vurgulamak için söyledim. Sizin kodunuzda herhangi bir hata olduğunu da ima etmek istemedim. Üretilen kodun sıfır hatalı olduğundan emin olmak derken de yani örneğin bir yerlerden ilk hazır verileri aldığınızı söylemiştiniz. Daha sonra program bu verileri alıyor ve artık doktorlar tarafından kullanılabilecek yeni veriler oluşturuyor. Bu ilk aldığınız verileri bu profesyonel hastanelerde kullanılan sistemlerden tekrar geçirip sonuçları karşılaştırıyormusunuz demek istemiştim. Kodların bir ders projesi için hazırlanmış olduğunu belirttiğiniz için buna gerek kalmadığı anlaşılmış oldu. Gerçekten böyle ilginç bir konuda makale hazırladığınız için ve hastalık teşhisi için canla başla çalıştığınız için teşekkürler! :)

  5. Hi Aydin,
    I’m Savitha from India. I saw this blog of yours on Pan-Tompkins algorithm..would you mind sharing it with me in English!The whole page would be of great help to me..please!I’m not familiar with this language that you have written your blog in(I’m guessing its Turkish!!)..Please help me!
    Awaiting your reply
    Savitha

  6. abi hocanın kabul etmeme sebebi pan tompkins algoritmasıymış. bu arada yazılarımı silmişsin, lavaştan vaz mı geçtin? :-)

  7. Gerçekten çok anlamlı ve başarılı bir çalışma. Böyle bir paylaşımdan dolayı teşekkür eder, ellerin dert görmesin Aydın Tarık Zengin derim :) Ben de bu dönem Biomedikal alıyorum, ve bütün olarak yapmış olduğun çalışma bizim 2 x %10 projemiz. Eğer yardımcı olabilirsen bir sorum olacak. Moving window output un dan sonra elimdeki sinyalin tekrar ECG sinyaline dönüştürme işleminde bir sıkıntım var. Karesi alına ve negatif komponenti olmayan bir sinyali tekrar eski haline nasıl getiriyoruz..? Şimdiden teşekkür eder, iyi çalışmalar dilerim..

  8. By the way, savitha, if you still need the English one of the project, I can translate this for you. You can write an e-mail address here for me to send it..
    P.S : You have limited time to get.. :)

  9. Hi,
    I’m Saeful from Indonesia. I saw this blog of yours on Pan-Tompkins algorithm and my research is aimed to Pan-Tompkins algorithm. would you mind sharing it with me in English? your blog The whole page would be of great help to me.
    please! Because I’m not familiar with this language that you have written on your blog ..Please help me!
    Awaiting your reply
    Thank you
    saeful

  10. Hi Saeful,

    I’m so sorry about that but I don’t have enough time to translate it into English. But yu can easily understand the idea from code. Most of the variables are in English. And also the filter names. The text parts are just for explaining the idea. You can get the program and run it into matlab. You also can get the data from this link : http://paste.linux-sevenler.org/index.php?id=1376

    Maybe it’s useful to explain the comb filter part. The comb filter part is used for removing the effect which comes from 220V 60Hz power line. You can see this effect easily. The whole signal looks like added on a sine wave.
    But there was another problem there. This sine wave affects the signal not only at 60Hz, but its harmonics. So you should make a comb filter which damps 60Hz and its harmonics.

    You can use my program freely. And if you inform me about your final project, I’ll be grateful to you. It’s nice to know that my program is useful for someone else.

  11. Hi,

    I am stuck with the Pan-Tompkins algorithm , i study this algorithm and unable to implement in Matlab.

    When I run your code, it said

    hamsinyal=load(‘ECG3′);

    unable to load ECG3

  12. It’s because you don’t have the ECG3 file. I’ve already given the link for this file in the post.
    http://paste.linux-sevenler.org/index.php?id=1376
    You can take the data from this link and save it as ECG3.

  13. HI (MARHABA)
    I HAVE WRITE MATLAB CODES FOR PAN TOMPKINS ALGORITHM FOR MY SENIOR DESIGN PROJECT EVEN THOUGH I DON’T SPEAK TURKISH I COOULD UNDERSTAND MOST OF THE CODINGS YOU HAVE DONE AND I FIND IT VERY HELPFUL, THE ONLY PROBLEM I HAVE IT TO WRITE THE CODES FOR THE BAND PASS FILTER OF THE PAN TOMPKINS ALGORITHM WITH HAS THE CUT OFF FREQUENCY OF 5HZ-15 HZ USING THE TRANSFER FUNCTION OF H(Z)=(1-Z^-6)^2/(1-Z^-1)^2 FOR THE LOW PASS FILTER AND H(Z)=(-1+32Z^-16+Z^-32)/(1+Z^-1)
    I WOULD APPERICIATE IF YOU COULD TELL THE CODING FOR THAT PART, YOU WOULD SAVE MY GRADUATION. TASHAKOORLAR (THANK YOU)

  14. hi
    also i would appericiate if you could explain how you have got the A and B coefficients for high pass and low pass filter , and why ten points ?
    thank you

  15. @Emre
    hi could you please do me a huge favor and send the translation to me please.
    thank you

  16. Actually I used coefficients from my textbook. Finding these coefficients is a different thing.
    As you said, understanding the code is not difficult. And also, you don’t have to use 10 point avarage or derivative based filters. Just make high and low pass filters.
    Now, I’m studying a different major. So it’s a bit difficult for me to remember these subjects. I’ve wrote this post 1 year ago, but made this project 2 years ago. I’ve forgot some parts :(

  17. merhaba

    güzel ve bilgilendirici bir yazıydı size bir sorum olcak,
    bu filtreleme işlemlerinin ambulanslardaki defibrilatörlerin monitör görüntülerinin hareket halindeki ambulansın yaptığı sarsıntından dolayı oluşan parazitileri filtreleme olasılığı varmıdır.Bilgilendirirseniz sevinirim

  18. Noise’un frekansina bagli.

  19. use google site translator you goons. it messes the code windows up but just keep both the turkish and the trasnlated one open at once and you can get the gist.

    Lukas, thanks for the tip :)

    Author, i love you.

  20. Hi,
    I downloaded th data file from the link you gave, saved it as ECG3 but I still get this error

    Unable to read file ECG3: No such file
    or directory

    did I miss something ? the data file is a .txt file right ?

  21. Disregard the last message i just added the txt extension to the input and it works. However after displaying the first to plots i get this error

    ??? Undefined function or method ‘arg’ for
    input arguments of type ‘double’.

    Error in ==> freqz_plot at 24
    phase = unwrap (arg (h));

    Error in ==> freqz at 158
    freqz_plot (f, h);

    Error in ==> test at 24
    freqz(B,A);

    i double checked the spellings and everything it seems fine I don’t quite understand why the error pops up. can you help

  22. @Sam
    I could not understand the error well but might it be a missing toolbox problem or a problem with the PATH?
    Please check the current directory you run the code in the path. If it’s not there, please add it.

  23. I have all the required files in the same folder I also used pathtool for setting the path. You wrote about missing toolbox do I need to have any special toolbox? I have the Matlab 7.9.0 2009b full version I thinks it has all the necessary toolbox unless you were referring to some toolbox that is not a part of the standard matlab setup. please let me know. Thanks for the reply.

  24. @Sam
    I just tried the code on a newly installed Matlab 7.9.0.529 R2009b with the standard toolboxes. It worked fine.
    Are you sure that the Matlab installation is fine? Because the error message says there is a problem with this : “phase = unwrap (arg (h));”. But this is not a part of the code i wrote.
    Can you try to write a simple program which uses freqz to see whether it’s working or not.

  25. Hi can you tell me where you got the data from I need few more samples for my project.

  26. This is the sample data of the lecture book – Signal Processing First.

  27. oh ok so you are using the processed data directly if i’m not wrong. ok thanks

  28. manab kumar das

    I need the english version of the pan tom kins algo.
    i shall be higly obliged if you send
    manab das

  29. I’m sorry but I can’t translate it now. But the code is understandable. If you know matlab a bit, you can easily understand what’s going on.

  30. Merhabalar.

    Matlab kadlarının olduğunu belirttiğiniz 4000 örnekli linkte sadece yazıalr var normal oalrak böyle mi?= ayrıca mail adresini yazabilir misin?

  31. Matlab kodlari orada degil zaten su anda okudugun sayfada. 4000 ornekten olusan veri de onceden kaydedilmis EKG verisi. Matlabda plot edersen gorebilirsin.

  32. mail adresin varsa yazabilir misin?.. ben 4. sınıfta okuyorum haberleşme bölümünde. tez konum, kalp aritmilerinin matlabda incelenmesi ve bunlara bakılarak hasta teşhisi koyma. Eğer elinde bunlarla alakalı makale tez varsa yolayabilir misin? gerçekten zor durumdayım araştırmadığım yer kalmadı.. b.guneyy@gmail.com

  33. Merhabalar

    verdiğiniz 4 bin örnekli kodların plotlama kodları varmı?? onuda yazarsanız çok sevinirim. teşekkürler.

  34. Verinin ECG3 isminde bir dosyaya kaydedildigini dusunursek

    hamsinyal=load(‘ECG3′);
    plot(hamsinyal);
    title(‘Ham Sinyal’);

    Gercekten haberlesme 4. sinifta olduguna emin misin? Veriyi matlabda plot edemiyorsan tezi nasil yapmayi dusunuyorsun merak ettim.

  35. evet 4. sınıftayım ancak ne yazıkki bize matlab göstermediler bende şu anda tez çalışması için kendi çabalarım ile öğrenmeye çalışıyorum..

    şimdi vermiş olduğun sinyal 4000 örnek alınmış bir sinya..ben bunu not defterine mi kaydetip çağırayım. Yardımlarını bekliyorum matlab konusunda.

    tekrar teşekkürler.

  36. Evet tum datayi bir text dosyasina koyup ardindan matlab icinde calisma dizinini dosyanin bulundugu dizine degistirip
    sinyal=load(‘dosyadi′);
    komutuyla dosyadaki veriyi sinyal degiskenine atayabilirsin. Sonra da
    plot(sinyal);
    komutuyla da sinyal degiskenini plot edebilirsin.
    Fakat tez icin bundan cok daha fazlasina ihtiyacin var. Internetten temel seviyede matlab komutlarini anlatan dokumanlardan okursan 1-2 haftada kabaca halledersin. Biraz programlama bilgin de varsa cok uzun surmez.

  37. zaten başladım şu anda tez çalışmamın ilk kısmında çalışmam ile ilgili yapılmış makale araştırıyorum o yüzden daha henüz matlab’a yoğunlaşamadım..

    Şimdi ben vermiş olduğun text dosyasını indirdim. Adınıda dediğin gibi ECG3 yaptım daha sonra hamsinyal=load(‘ECG3′);
    plot(hamsinyal);
    title(‘Ham Sinyal’); bu kodları yazdığımda ve masaüstüne kaydettiğimde karşıma şekil falan gelmiyor neden acaba ?

  38. hamsinyal=load(‘ECG3′);
    plot(hamsinyal);
    title(‘Ham Sinyal’);
    Bunlari matlab komut satirinda yazman ya da .m uzantili olarak kaydedip yine matlab icinde acip calistirman gerekiyor.
    Ama su asamada o sekli gormen sana pek bir yarar saglamayacak zira once matlab ogrenmen lazim. Plot ettigi zaman da bu sayfadaki ilk grafigi gosterecek sana.

  39. ya ben plot etmeyi biliyorum ama nedense senin dediğin gibi yapunca hata veriyor. O dediğin 3 satırlık kodu yazdım ve .m ECG adında kayydetiim ama çalışmadı hata verdi şekil görmedim

  40. ya keşke senle oturup çalışsak ) ders veriyor musun?.. tez konularımızda hemen hemen aynıymış..bana yardımcı ol yaaa msn adresini falan ver buraya yazman istemiyosan bana mail at. b.guneyy@gmail.com

  41. Sana birşey diyimmi bence sen daha sinyal plot etmeyi bilmiyorsun .. Yazdığın kodların aynısını yaz bakalım ne sonuç alacaksın.. Yazdığın kodlarda eksiklik var.

    Aşağıdaki kodlarda eksiklik var madem çok biliyosun bul bakalım.

    hamsinyal=load(‘ECG3′);
    plot(hamsinyal);
    title(‘Ham Sinyal’);

  42. Seni sayiyla mi verdiler nedir? Seni zorlayan mi var gel buradaki kodu kopyala diye. Once saygili olmayi ogren. Bi daha da ugrama buraya.

  43. Ya arkadaş yalan yanlış şeyler yazıyorun sonra gelmiş bana laf ediyorsun. Asıl sen saygılı olmayı öğren .. Ben senin yazdığın kodlar üzerinde sana inanarak bildiğini düşünerek günlerce çalıştım. Doğrusunu öğrendiğimde senin hiç birşey bilmediğini analdım. Zaten daha girmem bişeye benzemeyen sitene.

  44. Neymis dogrusu cok merak ettim, ayrica da tebrik ederim, super matlab bilginle biz acizleri aydinlattigin icin. Yorumlarini ozellikle silmiyorum ki insanlar gorsunler nasil biri oldugunu. Sen daha okudugunu anlamiyorsan yapabilecegim birsey yok. Apostrophe ile prime farkini da bi zahmet kendin goruver. Allah bilir hata var dedigin de odur. Yoksa daha basitini dusunmek istemiyorum.

  45. Merhabalar..

    Öncelikle çok iyi bir çalışma yaptığınızı belirtmek istiyorum.

    Bu en başta elde ettiğiniz data’yı MIT’den mi aldınız?.. Ben MIT’den aldığım datayı açamıyorum.Bu konuda bir bilginiz var mı:?:

    Datayı Matlab’a .dat olarakmı okutmam lazım?

    teşekkürler

  46. Data ders kitabinin deney CDsinden, bilmiyorum MIT’de de o kitap mi kullaniliyor.
    Ister elle matlabda ekleyebilir isterseniz de program icerisinden cagirabilirsiniz, size kalmis.

  47. Ben MIT’den aldığım datayı MATLAB’da .dat oalrak okuttuğumda karşıma 1×1 lik bir matris geliyor. ben biraz araştırdım ama bu datayı açmanın zor olduğunu gördüm. Ben bu datayı görmeden üzerinde nasıl işlem yapcağım ?..Bu konuda yardımcı olursanız çok sevinirim.

  48. Dosyanin icine herhangi bir metin editoruyle bakin. Uzantisi onemli degil. Normalde data dosyasi text formatinda olur. Yok eger workspace oldugu gibi kaydedilmisse, yani mat dosyasi ise dogrudan matlab icerisinden acilabilmesi lazim.
    Metin editoru ile icini gorebiliyorsaniz ve icinde yalnizca tek bir deger varsa, dosyada yanlislik olabilir.

  49. Not Defteri ile dosyayı açamıyorum. Not defter, hata veriyor. Matlab’da direkt oalrak okuttuğumda karşıma 1×1 lik matris geliyor. İsterseniz ben size .dat dosyasını atayım sizde görün. MIT’de 101,102,103… numaralı datalar çok bilinir zaten..Bende şu anda bu konu ile ilgileniyorum ve şu anda daha yöntem aşamasındayım ..

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">