2

サンプリングされた (一変量の) データがいくつかありますが、サンプリング プロセスを駆動するクロックが不正確です。その結果、30 ごとに 1 サンプル (未満) のランダム スリップが発生します。周波数の約 1/30 のより正確なクロックは、信頼できるサンプルを提供します同じデータ...時計のずれを正確に推定することができます。

サンプリングされたデータを補間してこれを修正し、高周波データを低周波データに「適合」させようとしています。これを「リアルタイム」で実行する必要があります - いくつかの低周波サンプルのレイテンシーを超えないようにします。

さまざまな補間アルゴリズムがあることは認識していますが、検討した中では、スプライン ベースのアプローチがこのデータに最も有望に見えます。

私はPythonで作業しており、scipy.interpolateパッケージを見つけましたが、それを使用してn個のサンプルを「ストレッチ」して小さなタイミングエラーを修正する明確な方法はわかりませんでした。私は何かを見落としていますか?

私は、適切な公開されたアルゴリズムへのポインター、または理想的には、この種の変換を実現するための Python ライブラリー関数へのポインターに興味があります。これは SciPy (またはその他) でサポートされていますか?

アップデート...

最初は些細な問題に思えたことが、最初に思ったほど簡単ではないことに気づき始めています。単純なスプラインの使用で十分であるとは、もはや確信が持てません。また、「クロックドリフト」を参照せずに問題をより適切に説明できることにも気付きました...次のように:

1 つのランダム変数が 2 つの異なる周波数 (低周波数と高周波数) でサンプリングされ、公約数はありません (例: 5hz と 144hz)。サンプル 0 が両方のサンプル レートで同一であると仮定すると、サンプル 1 @5hz はサンプル 28 と 29 の間に収まります。たとえば、720hz で、すべての既知のデータ ポイントに「できるだけスムーズに」適合する新しいシリーズを構築したいと考えています。

「すぐに使える」ソリューションを見つけたいと思っていました。

4

2 に答える 2

1

プログラミングに関する質問をする前に、もっと基本的な科学的な質問を調査する必要があるように思えます。

badfastclock を goodlowclock に適合させる特定の方程式の選択を開始する前に、ドリフトの性質を調査する必要があります。両方の時計をしばらく動かし、それらのポイントを一緒に見てみましょう。badfastclock はリアルタイムから直線的に離れていくので悪いのでしょうか? もしそうなら、2次方程式が重力における物体の線形加速度を記述するのと同じように、簡単な2次方程式はbadfastclockをgoodlowclockに当てはめる必要があります。つまり、badfastclock がリアルタイムから離れて直線的に加速している場合、badfastclock をリアルタイムに確定的にシフトできます。ただし、badfastclock が飛び回っているために不適切であることがわかった場合は、滑らかな曲線 (スプラインのような複雑で滑らかな曲線であっても) は適合しません。データを操作する前に、データを理解する必要があります。

于 2013-05-20T14:56:56.050 に答える