2012-01-23 8 views
7

Tôi có đường cong này có chứa các đỉnh nhất định - Tôi muốn biết cách lấy số lượng các đỉnh này.Làm thế nào để đếm số đỉnh trong biểu đồ? -graph analysis-

mẫu dữ liệu:

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 

Cột 1 là các giá trị X, cột thứ 2 là các giá trị y.

Tôi muốn viết macro hoặc công thức cho tôi biết số lượng đỉnh trong biểu đồ này. Lưu ý: biểu đồ này thực sự được biểu quyết và xuất từ ​​MATLAB, vì vậy nếu có một cách tôi có thể nói mã của tôi để làm điều đó cho tôi từ MATLAB nó cũng sẽ là tuyệt vời!

+0

Có khá một vài dò matlab đỉnh, xem [MathWorks tập Trao đổi] (http: //www.mathworks .com/matlabcentral/fileexchange /? term = peak) –

Trả lời

8

nếu dữ liệu của bạn là trong A1:B36 sau đó công thức này =SUMPRODUCT(--(B2:B35>B1:B34),--(B2:B35>B3:B36))
lợi nhuận 11 đỉnh

Nó sẽ kiểm tra nếu

  • B2 cao hơn B1 và B3, nếu có thì đếm nó như là một đỉnh
  • sau đó nếu B3 cao hơn B2B4, nếu tính như vậy là cao nhất và cứ như vậy

enter image description here

[Cập nhật: yêu cầu VBA thêm]

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 Kudo cho một câu trả lời đơn giản đáng kinh ngạc. –

+0

Câu trả lời tuyệt vời, tôi thực sự đánh giá cao nó, nhưng là nó có thể có đồ thị chỉ ở đỉnh quá giống như trong ví dụ của bạn ?? – Zalaboza

+1

@MomenMElZalabany đã hoàn thành, xem mã mẫu :). Thx Rachel – brettdj