2012-01-23 18 views
7

Belirli zirveleri içeren bu eğri var - Bu zirvelerin sayısını nasıl alacağımı bilmek istiyorum.Grafikte zirvelerin sayısı nasıl sayılır? -graph analysis-

Örnek veri:

0.10 76792 
0.15 35578 
0.20 44675 
0.25 52723 
0.30 27099 
0.35 113931 
0.40 111043 
0.45 34312 
0.50 101947 
0.55 100824 
0.60 20546 
0.65 114430 
0.70 113764 
0.75 15713 
0.80 83133 
0.85 79754 
0.90 17420 
0.95 121094 
1.00 117346 
1.05 22841 
1.10 95095 
1.15 94999 
1.20 18986 
1.25 111226 
1.30 106640 
1.35 34781 
1.40 66356 
1.45 68706 
1.50 21247 
1.55 117604 
1.60 114268 
1.65 26292 
1.70 88486 
1.75 89841 
1.80 49863 
1.85 111938 

1. sütun X değerindedir, 2. sütun Y değerindedir.

Bu grafikte kaç tane pik olduğunu söyleyen bir makro veya formül yazmak istiyorum.

Not: Bu grafik, gerçekte matlabdan çizilir ve dışa aktarılır, bu yüzden eğer bir kod varsa, matlab'dan benim için bunu yapmak için bir yol varsa, o da harika olurdu!

+0

epeyce matlab zirve dedektörleri bulunmaktadır [Güncellendi VBA isteği eklendi] (http [Mathworks Değişim Dosya] bkz: //www.mathworks .com/matlabcentral/fileexchange /? term = peak) –

cevap

8

veri A1:B36 olsaydı bu formül =SUMPRODUCT(--(B2:B35>B1:B34),--(B2:B35>B3:B36))
döner 11 tepe

  • B2B1 ve B3 daha yüksek ise, bu şekilde, bir pik olarak sayar eğer, kontrol
  • daha sonra B2 ve B4'dan daha yüksekse,ve

enter image description here

:

Sub GetMax() 
    Dim chr As ChartObject 
    Dim chrSeries As Series 
    Dim lngrow As Long 
    On Error Resume Next 
    Set chr = ActiveSheet.ChartObjects(1) 
    Set chrSeries = chr.Chart.SeriesCollection(1) 
    On Error GoTo 0 

    If chrSeries Is Nothing Then Exit Sub 

    For lngrow = 2 To UBound(chrSeries.Values) - 1 
     If chrSeries.Values(lngrow) > chrSeries.Values(lngrow - 1) Then 
      If chrSeries.Values(lngrow) > chrSeries.Values(lngrow + 1) Then 
       chrSeries.Points(lngrow).ApplyDataLabels 
       With chrSeries.Points(lngrow).DataLabel 
        .Position = xlLabelPositionCenter 
        .Border.Color = 1 
       End With 
      End If 
     End If 
    Next 
End Sub 
+2

+1 Şaşırtıcı derecede basit bir cevap için Kudos. –

+0

İnanılmaz cevap, gerçekten takdir ediyorum, ama örneğinizde olduğu gibi zirvelere işaret eden bir grafik olması mümkün mü? – Zalaboza

+1

@MomenMElZalabany tamamlandı, örnek kod bakın :). Thx Rachel – brettdj

İlgili konular