Excel & MATLAB Peak Noktaları Buldurma?
-
Merhaba arkadaşlar elimde yaklaşık 900 adet peak point olcak, bu peak pointlerin nasıl oması gerektiğini anlatayım.
her sütunda belirtilen değerler sağdaki gibi örnek grafiğin y değerleri. bana lazım olan peak noktaları ise 0'dan büyük olan noktalar yani grafiğin x ekseni altındaki alan olmayacak.
bana kırmızı ile işaretlediğim noktalar lazım.
yaklaşık 90,95 tane yapıo gecen hafta elle bakmıstım. bu hafta 10 tane örnek olunca elle yapmam cok zor olacak. daha bunun formülasyonu ve matematiksel işlemleri var.
MATLAB veya Excel'de yaptırabilirim. Farketmez Vba,Matlab,Excel formül her türlü yardıma açığım
Excel Dosyası: https://drive.google.com/open?id=0B05TqHrS3z6uLVFRb2s1Nmt1QkE
edit:matlab findpeaks fonksiyonu işimi görecek gibi ama parametreleri nasıl yazıcam bilemiyorum. direkt findpeaks yapınca heryeri alıyo.
mesela gereksiz peak noktaları bunlar
snrhsn tarafından 18/Ara/16 19:55 tarihinde düzenlenmiştir -
Hocam MATLAB'de findpeaks fonksiyonu sana peak değerlerden oluşan vektör verecek. Bu değerleri elde ettikten sonra;
x = findpeaks(data)
%Daha sonra;
non_zero = find(x>0) % Bu satır sana değeri 0 dan büyük değerleri verecek.
%Son olarak;
positive_peaks = x(non_zero) % Bu satırlar positif eksendeki peak değerlerini elde edeceksin
Kolay gelsin
-
aercys bunu yazdı
Hocam MATLAB'de findpeaks fonksiyonu sana peak değerlerden oluşan vektör verecek. Bu değerleri elde ettikten sonra;
x = findpeaks(data)
%Daha sonra;
non_zero = find(x>0) % Bu satır sana değeri 0 dan büyük değerleri verecek.
%Son olarak;
positive_peaks = x(non_zero) % Bu satırlar positif eksendeki peak değerlerini elde edeceksin
Kolay gelsin
dediğinizi zaten yapıyorum fakat; resimde gösterdiğim y değerleri pozitif olan gereksiz peakler cıkıyor. bana bunlarında en büyüğü lazım kırmızıyla belirttiğim gibi
-
snrhsn bunu yazdıaercys bunu yazdı
Hocam MATLAB'de findpeaks fonksiyonu sana peak değerlerden oluşan vektör verecek. Bu değerleri elde ettikten sonra;
x = findpeaks(data)
%Daha sonra;
non_zero = find(x>0) % Bu satır sana değeri 0 dan büyük değerleri verecek.
%Son olarak;
positive_peaks = x(non_zero) % Bu satırlar positif eksendeki peak değerlerini elde edeceksin
Kolay gelsin
dediğinizi zaten yapıyorum fakat; resimde gösterdiğim y değerleri pozitif olan gereksiz peakler cıkıyor. bana bunlarında en büyüğü lazım kırmızıyla belirttiğim gibi
En büyük değer lazımsa max() fonksiyonunu kullanabilirsiniz.
Edit: Size tek bir değer de lazım değil anladığım kadarı ile, bu durumda sınır değeriniz ne bilmiyorum ancak;
peak noktaları bulduktan sonra find() fonksiyonu ile sınır değerinizden büyük peak noktaların indexlerini bulup, o indexlerle yeni vektör oluşturabilirsiniz. Yukarıdaki örneğin benzeri şekilde.
-
Fonksiyon periyodik mi?
Yani x ekseninde 0'a değdiği noktalar k,2k,3k,4k... şeklinde mi artıyor?
Eğer öyleyse k ile 2k arasındaki max'imumu bul, 2k ile 3k arasında maximumu bul şeklinde matlabda çalışabilirsin.
-
findpeaks için 'minpeakheight' ve 'minpeakdistance' özellikleri var. peakheight bu değerin üstündeki tepeleri alır. distance da iki tepe arası minimum mesafe olur işini görür diye düşünüyorum
-
konuyu bi güncelleyeyim dedim, belki log decrement metodu ile damping ratio bulmak isteyen olur .
aşağıdaki excel iş görüyo.
https://drive.google.com/open?id=0B4e2PCIvKImzU0s2UWF2SHBzZVk
(sadece pozitif peakleri verir)