我有一个int数组,我在图中绘制了这些值。 (使用zedgraphcontrol)
在该曲线中,我想使用C#.net找到局部最大值 我的想法是平滑曲线以消除噪音。 我怎样才能找到那些地方。
非常感谢您的所有回复
答案 0 :(得分:3)
我不会尝试在他的回答中解决Oleksii地址,但是我将展示如何在ZedGraph中平滑曲线的简单示例:
GraphPane myPane = zedGraphControl1.GraphPane;
LineItem myLine = myPane.CurveList.AddCurve("Data", myPointPairList, Color.Blue);
myLine.Line.IsSmooth = true;
myLine.Line.SmoothTension = 0.1F;
从0.0F到1.0F的值影响平滑量,> 1.0F可能是不合需要的。
平滑的源代码文档:http://zedgraph.sourceforge.net/documentation/html/P_ZedGraph_Line_IsSmooth.htm
Zedgraph参考文献:
答案 1 :(得分:1)
答案取决于具体情况。如果您只需要找到局部最大值,那么您可以只有一个间隔(子数组)并执行简单的迭代Math.Max()
。但是,这可能不是你想要的。
正如您还提到的平滑,这与寻找局部最大值不同。你可以使用many techniques,它们基于面积,信号类型,时间,频率,空间,阶段,你的需求,你的目标,你的假设等。
您可以从信号的一些探索性统计数据开始,以帮助您了解可以应用的技术。这些工具可用于统计数据包(例如SPSS,Minitab)和Matlab。看一下信号图,首先尝试曲线拟合和线性回归。从那里你可以看到去哪里。