我想使用Excel在庞大的数据集中找到局部最大值,而我一直在尝试的方法是比较上一个和下一个值,以确保它们较小,例如:
=IF(AND(C4>C3,C4>C5),"Local maxima","")
但是此公式的麻烦之处在于,如果峰延伸到多行,它将无法捕捉为局部最大值。尽管存在这样的事实,但随着值开始下降,这是一个局部最大值。
(如果您想知道为什么要在一组光谱数据中找到局部最大值)
您走在正确的轨道上!您可以通过几个帮助器列来完成。请参见下图。
第一助手列“ slope”使用Excel的SLOPE函数。它计算两个相邻点之间的斜率。
第二个辅助列“用于标签”检查从正斜率到负斜率的过渡。从正斜率到负斜率的过渡标记为“最大”。
然后,您可以使用如下宏使用最大值来标记图形:
Sub CustomLabels()
Dim i, myCount, pt
ActiveSheet.ChartObjects("myChart").Activate
myCount = ActiveChart.SeriesCollection(1).Points.Count
For i = 1 To myCount
ActiveChart.SeriesCollection(1).Points(i).ApplyDataLabels
ActiveChart.SeriesCollection(1).Points(i).DataLabel.Text = Range("D" & i + 1).Value
Next i
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句