int の配列があり、その値をグラフにプロットします。(zedgraphcontrol を使用)
その曲線では、C#.net を使用して極大値を見つけたいと考えています。私の考えは、曲線を滑らかにしてノイズを除去することです。どうすればその場所を見つけることができますか。
すべての返信に感謝します
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
ゼッドグラフの参考文献:
答えは文脈によって異なります。局所的な最大値のみを見つける必要がある場合は、間隔 (サブ配列) を指定して単純な反復を実行できますMath.Max()
。ただし、これはあなたが望むものではないかもしれません。
平滑化についても言及しましたが、これは極大値を見つけることとは異なります。そのために使用できる多くの手法があり、面積、信号の種類、時間、周波数、空間、位相、ニーズ、目標、仮説などに基づいています。
どの手法を適用できるかを理解するのに役立つように、信号に関するいくつかの探索的統計から始めることができます。このようなツールは、統計パッケージ (SPSS、Minitab など) および Matlab で利用できます。信号プロットを見て、最初に曲線フィッティングとおそらく線形回帰を試してください。そこから、どこに行くべきかがわかります。