データの均一性を維持するラインスムージングアルゴリズム


7

イントロ:

私はブラウザーでプロットする必要のある巨大なデータセットを使用しています。最大100万ポイントになる可能性があるため、私の考えは、異なるズームレベルに対して異なる表現を作成することでした。

100kポイントあるとしましょう。50kになるまで2つずつ平均し、500ポイント(任意のしきい値)未満になるまでそれを繰り返します。

したがって、最もズームアウトしたレベルでは、グラフのサイズに応じて500ポイントすべてまたはその一部を描画し、ズームインすると、次のズームレベルに切り替わります(ユーザーが選択範囲をドラッグするとデータをストリーミングしますl / r) )、そして最終的にユーザーが細かい細部を見たい場合は、0ズームレベルにズームしてすべての細部を見ることができます。

私は実際にこのプロトタイプを作成し、1つのことを除いて非常にうまく機能しています。これの副作用は、ご想像のとおり、平均化の反復でピークが失われることです。

Douglas-Peuckerアルゴリズムと、それがどのようにピークを維持できるかについていくつかの調査と発見を行い、いくつかのテストを行いましたが、それは非常にうまく機能しましたが、それに関する問題は、一連のデータ(y値)に遭遇した場合です[1 、1、1、1、5、6、1、1、1、1、1、1] [1,6,1,1]のようなものにスムーズにします。このようにズームレベルの比率を維持

n(元のデータの長さ)> n / 2> n / 4> n / 8> .....

私はラインスムージングに関する論文をほとんど読んでいませんが、見つけたすべてのアルゴリズムは距離のしきい値を受け入れており、パラメーターとしてスムージングに使用しています。また、それらのどれも、目的の出力要素の数を受け入れることができません。行、彼らはこのようなシーケンス(y値)[1,1,1,1,1,1,1,1,1,1,1]を[1,1]に変換します

だから、最後に、私の質問:

次のようなアルゴリズムはありますか?

  • 通常の距離しきい値の代わりに、必要な数の出力要素を受け入れます
  • (Douglas-Peuckerと同様に)ピークを保持しようとします
  • (y値)[1,1,1,1,1,1]を取得し、3つの出力が必要だと言っても、理論的には[1,1]として平滑化することが正しい場合、イベントは均一にデータを平滑化します代わりに[1,1,1]を取得する必要があります

また、すべてのデータは1からnまで1のステップで測定されるため、N / A値、空白のスポット、[1.3のような値はないため、X軸情報の欠如と混同しないでください。 、1.4、3]

xは常に[1,2,3 .... n]です


これは、(たとえば、フラクタルで見られるような)自己相似性のアプリケーションに非常によく似ています。この場合、完全なデータセットまたはおそらくより単純な機能を維持して、適切な方程式とアルゴリズムをプログラムで決定する必要があります。画像スケーリングアルゴリズム...
Richard Arnold Mead

ただの好奇心:簡単なアルゴリズム(平均なし、平滑化なし)を試しましたか?ズームアウトレベルの場合z つまり、あなたが表現したい 元のみ使用 m=/2zポイント; 次に、メートル 異なる間隔ごとの最小値と最大値を選択するだけの値 [2/メートル+12/メートル=0メートル/21。たとえば、ズームレベル1でポイント[1 2 6 9 2 2 3 5]を[1 9 2 5]に減らします(1,9は最初の4ポイントの最小/最大、2,5は最小/最大2番目の4ポイント)。
Vor

回答:


1

ここでは、2つの方法を試してみます。

提案1:線形フィルターを使用します。平均を計算する代わりにバツ2バツ2+1バツ2+バツ2+1/2、より大きなシーケンスを平均してみてください、例えば y=バツ21+2バツ2+2バツ2+1+バツ2+2/6

提案2:条件付きフィルターを使用する:ifx2n<x2n+1>x2n+2 または x2n1<x2n>x2n+1、それから y=x2n+1 または y=x2それぞれ、そして極小値についても同様です。それ以外の場合は、以前のように平均(または線形フィルター)を使用します。


君の "y=バツ2+1y=バツ2)」表記は不明確です。
James Waldby-2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.