はここだけのアイデア、さまざまな角度からのソートの考え方、そしておそらく非常に悪い考えですが、分化が働いていないので、このようなものが考えかもしれません。
まず、意味のある最小X軸間隔を決定する必要があります。あなたの姿では、これを小さすぎると思うと、バンプから偽陽性を得るでしょう。これは概念的にはデータをスムーズにするという考え方に似ています。この間隔をdxと呼ぶ。
次に、サイズdxのスライディングウィンドウを使用して、あなたの曲線に対応する移動平均曲線を生成します。これを行うことについて考えることができるさまざまな方法があります(統計的な外れ値を取り除くため、またはウィンドウ内のより多くのポイントまたはより少ないポイントを使用するために)。この曲線g(x)とオリジナルの曲線f(x)を呼び出します。さらに、g(x)を計算するために使用するスライディングウィンドウ内のデータのばらつきの何らかの尺度を与える曲線h(x)を作成します(間隔から数点を使用する場合は標準偏差がうまくいくはずです)。今
は、フォームc_m(X)の曲線を計算開始= | F(X) - G(X)| - m * h(x)である。あなたはm = 1で始めることができます。c_m(x)が正である任意の点xは、局所最小/最大の候補である。ヒット数に応じて、mを増減させることができます。バイナリ検索と同様の方法でこれを行うことができます。より多くのポイントが必要な場合はm =(min + m)/ 2とし、ポイントを減らしたい場合はm =(max + m)/ 2それに応じて最大)。
ここに私が示唆しているものの例があります。我々は、次のシリーズを持っているとしましょう:
f(x) = [ 1, 2, 4, 3, 2, 3, 6, 7, 8, 7,
5, 4, 3, 2, 2, 3, 2, 3, 5, 8, 9]
我々はXの周りのポイントの単純平均とることで(x)はグラムを構築DX = 5を選択:M = 1当社では
g(x) = [2.3, 2.5, 2.4, 2.8, 3.6, 4.2, 5.2, 6.2, 6.6, 6.2,
5.4, 4.2, 3.2, 2.8, 2.4, 2.4, 3.0, 4.2, 5.4, 6.3, 7.3]
h(x) = [1.2, 1.1, 1.0, 0.7, 1.4, 2.4, 2.3, 1.7, 1.0, 1.5,
1.9, 1.7, 1.2, 0.7, 0.5, 0.6, 1.1, 2.1, 2.7, 2.4, 1.7]
を取得:
c(x) = [0.1, xxx, 0.6, xxx, 0.2, xxx, xxx, xxx, 0.4, xxx,
xxx, xxx, xxx, 0.1, xxx, 0.0, xxx, xxx, xxx, xxx, 0.0]
これは実際にはかなりうまくいっているようです。思考を分かち合いましょう。これは、平均値の定理が与えられれば、これは多かれ少なかれ分化の等価かもしれないことに注意してください。
なぜこの「タグ付きグラフアルゴリズム」ですか? – harold
@harold私の推測では、彼はアルゴリズムを望んでおり、入力データをグラフ化することができます(上記参照)。 ; Dもっと深刻なことに、これは明らかにグラフアルゴリズムではありません。 – Patrick87
タグが削除されました。あなたはこれをどのように解決するか考えていますか? :Dありがとう – Yaron