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.

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
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
Ş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 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 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 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 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.


yine oturmus temiz temiz yazmissin. takdir ettigim blogcu kardesim, buralara tekrar gelirsin umarim.
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ü..
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.
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!
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
abi hocanın kabul etmeme sebebi pan tompkins algoritmasıymış. bu arada yazılarımı silmişsin, lavaştan vaz mı geçtin?
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..
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..
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
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.
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
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.
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)
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
@Emre
hi could you please do me a huge favor and send the translation to me please.
thank you
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
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
Noise’un frekansina bagli.
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.
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 ?
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
@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.
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.
@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.
Hi can you tell me where you got the data from I need few more samples for my project.
This is the sample data of the lecture book – Signal Processing First.
oh ok so you are using the processed data directly if i’m not wrong. ok thanks
I need the english version of the pan tom kins algo.
i shall be higly obliged if you send
manab das
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.
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?
Matlab kodlari orada degil zaten su anda okudugun sayfada. 4000 ornekten olusan veri de onceden kaydedilmis EKG verisi. Matlabda plot edersen gorebilirsin.
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
http://www.tarikzengin.com/hakkinda
Merhabalar
verdiğiniz 4 bin örnekli kodların plotlama kodları varmı?? onuda yazarsanız çok sevinirim. teşekkürler.
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.
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.
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.
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 ?
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.
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
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
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’);
Seni sayiyla mi verdiler nedir? Seni zorlayan mi var gel buradaki kodu kopyala diye. Once saygili olmayi ogren. Bi daha da ugrama buraya.
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.
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.
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
Data ders kitabinin deney CDsinden, bilmiyorum MIT’de de o kitap mi kullaniliyor.
Ister elle matlabda ekleyebilir isterseniz de program icerisinden cagirabilirsiniz, size kalmis.
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.
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.
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 ..