2010-11-29 7 views
4

下の図の上部に、時間(x軸)に沿って変化する値(y軸)があります。2つのデータセット間の補間誤差を最小限にする

このように、予測できないさまざまな時期に値をサンプリングしています。また、赤と青で示された2つのデータセット間でサンプリングを交互に行っています。

いつでも値を計算すると、赤と青の両方のデータセットが同じ値を返すことが予想されます。しかし、3つの小さなボックスに示されているように、これは当てはまりません。毎回見ると、各データセット(赤と青)からの値が発散して元の値に収束するように見えます。まず

diagrams showing the error in interpolation

Iは、次のIはキャットマル-Romの補間を使用してみました、値を得るために、線形補間を用います。前者は値が近くに来るようになり、各データポイント間で値がずれる。後者は、より近いままであるが、平均誤差がより大きい値をもたらす。

(おそらく、より多くの数のサンプルポイントを各データセットから使用することによって)スムージングを向上させる別の戦略または補間方法を提案できますか?

+0

それは価値があります私は一貫性のために正確さを犠牲にする用意があることに注意してください。線形補間とCatmull-ROM補間の両方で、サンプルポイントだった時間値を求めると、サンプリングされた正確な値が返されることが保証されます。私はこの保証を必要としません。 – dukedave

+0

これは有用かどうか少し不明ですが、[疑似ランダムサンプリング](http://en.wikipedia.org/wiki/Low-discrepancy_sequence)を知っていますか?確率分布を統合するなどの状況では、通常無作為サンプリングを使用する場合に非常に役立ちます。 –

答えて

1

Try B-splines:Catmull-Romが補間(データ点を通る)し、Bスプラインがスムージングします。均一に離間したデータについては、例えば
、(ないあなたの場合)、補間赤/青の曲線は赤/青のデータ点の間隔に依存してもちろん

Bspline(t) = (data(t-1) + 4*data(t) + data(t+1))/6 

、 はそれほど完全に一致することができません。

2

私はあなたが尋ねるものは、根底にあるサンプリングされたプロセスについての知識がなければ、まっすぐな答えがない質問です。その性質上、サンプル間の関数の値はなのでなので、2つのサンプル配列の補間の収束を保証する方法はないと思います。

つまり、基礎となるプロセスについて事前に知識があれば、いくつかの補間方法の中から選択して、エラーを最小限に抑えることができます。例えば、翼速度の関数として抗力を測定すると、関係は正方形(a * V^2)であることがわかります。次に、2次の多項式フィッティングを選択し、2つの系列の補間の間にかなり良好なマッチングを取ることができます。

+0

ysapに感謝します。値は実際には位置ベクトルの成分になるため、連続関数です。したがって、Catmull-Romは実際には2つのデータセット間に記述されたエラーを生成するという点を除いて、非常に優れた補間方法です。 – dukedave

1

Introduction to Catmull-Rom Splinesを引用して、この補間タスクにCatmull-Romを使用しないことをお勧めします。キャットマル - ロム スプラインの特徴の

一つ指定曲線 が制御点の全てを通過することである - これはスプラインのすべてのタイプ の真実ではありません。

は、定義によると、あなたの赤の補間曲線はすべて赤のデータポイントを通過すると、あなたの青色の補間曲線はすべてブルーのポイントを通過します。したがって、両方のデータセットに最適なものは得られません。

境界条件を変更し、のデータポイントを使用して、両方のデータセットをこれらのslidesに示すように使用することができます。

+0

スプラインタイプがすべてのコントロールポイントを通過するとは限りません。また、スライドへのリンクのおかげで、私は両方のセットが必ずしも同じデータセットから来るとは限らないことに注意してください(したがって、それらを比較することはできません)。 – dukedave

0

元の連続関数をサンプリングする場合、サンプリング周波数はNyquist-Shannon sampling theoremに準拠する必要があります。そうでないと、サンプリングプロセスでエラー(別名とも呼ばれます)が発生します。このエラーは、2つのデータセットで異なるため、補間するときに異なる値になります。

したがって、あなたが最も高い周波数を元の関数のBを知る必要があり、その後、周波数少なくとも2Bでサンプルを収集します。あなたの関数が非常に高い周波数を持っていて、それを高速でサンプリングすることができない場合は、サンプリングする前にフィルタリングを少なくとも試みてください。

1

私はysapに同意します。この質問にはあなたが期待しているとおりに答えられないことに同意します。あなたのモデルのダイナミクスに応じて、より良い補間方法があるかもしれません - ysapの場合と同様に、わかっていれば、基礎となるダイナミクスを利用する方法をお勧めします。いつでも値を計算するとき、我々は期待し

青/赤のサンプルについては、私はあなたをサンプリングし、補間されたデータ・セットについての良い観察をしたし、私はことをあなたの元の期待に挑戦だと思います赤と青の両方のデータセットで同様の値が返されます。

私はこれを期待していません。完全に補間することができないと仮定した場合、特に補間誤差がサンプルの誤差に比べて大きい場合は、サンプル点から最も長い誤差を示す連続誤差関数を使用することが確実です。したがって、サンプルポイントが異なる2つのデータセットは、赤いサンプルポイントから遠い(時間的に)ポイントが青いサンプルポイントに近い(時間的に)か、その逆の場合があるため表示される動作を示すはずです。これは確かです。したがって、私は、あなたが見せてくれるものを期待しています:

各データセット(赤と青)の値は、時間の経過とともに表示され、元の値を中心に収束しているように見えます。

(あなたは周波数の内容を除いて基本的なダイナミクス()についての情報を持っていない場合は、サンプリングのジャコモのポイントが重要です - 。しかし、あなたはナイキスト以下の情報を見ていた場合に補間する必要はありません)