1

int の配列があり、その値をグラフにプロットします。(zedgraphcontrol を使用)

その曲線では、C#.net を使用して極大値を見つけたいと考えています。私の考えは、曲線を滑らかにしてノイズを除去することです。どうすればその場所を見つけることができますか。

すべての返信に感謝します

4

2 に答える 2

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

ゼッドグラフの参考文献:

于 2011-08-01T15:07:05.300 に答える
1

答えは文脈によって異なります。局所的な最大値のみを見つける必要がある場合は、間隔 (サブ配列) を指定して単純な反復を実行できますMath.Max()。ただし、これはあなたが望むものではないかもしれません。

平滑化についても言及しましたが、これは極大値を見つけることとは異なります。そのために使用できる多くの手法があり、面積、信号の種類、時間、周波数、空間、位相、ニーズ、目標、仮説などに基づいています。

どの手法を適用できるかを理解するのに役立つように、信号に関するいくつかの探索的統計から始めることができます。このようなツールは、統計パッケージ (SPSS、Minitab など) および Matlab で利用できます。信号プロットを見て、最初に曲線フィッティングとおそらく線形回帰を試してください。そこから、どこに行くべきかがわかります。

于 2011-07-30T10:54:37.867 に答える