2009-03-06 8 views
3

ジッタを減らすために、値のセットをフィルタリングする必要があります。そのためには、最も最近のものが最も効果があり、最も最近のものが最も効果が小さいもののリストを平均することができる必要があります。私は10のサンプルサイズを使用していますが、それはいつか変更することができます。データセットのエージング

ここで適用できる合理的に簡単なエージングアルゴリズムはありますか?

+0

したがって、自動在庫取引;) 半減期(ゲームではない数式)のウィキペディアの記事を見て、それを値に適用します。そうすれば、必要な処理を行う時間加重平均が得られます。 –

+0

電圧は、実際には良い推測です。 –

答えて

5
  • exponential smoothingをご覧ください。かなりシンプルで、あなたのニーズに十分かもしれません。基本的に最近の観察は、古いものよりも相対的に大きな重みを与えられます。
  • また、アプリケーションによっては、Q-LearningまたはTD-Learningなどのさまざまな強化学習方法を参照するか、一般にという割引方法を含む任意の方法を検討することができます。
0

私は組み込み制御アプリケーションで同様のものを使いました。

最も簡単なオプションは、3/4フィルタです。

Overview
FIR FAQ
Wikipedia article

0

多くの加重平均アルゴリズム:私は最終的に代わりに16タップFIRフィルタで行くことにしました

current_value = (3*current_value + new_value)/4 

:これは、データセット全体にわたって連続的に適用されます使用することができます。配列のNへのn = 1の項目I(n)のための例えば

、(最新の最も古い):

(SUM(I(n) * (N + 1 - n))/SUM(n) 
0

それはあなたが固定長を扱っているかどうかの問題から、正確には明らかではありません データが継続的に入力されているかどうかを確認してください。後者の物理モデルはコンデンサと抵抗(RとC)を使用してローパスフィルタになります。 あなたのデータが時間的に等間隔であると仮定すると、これは更新処方につながります。

U_aged [n] + deltat/Tau(U_raw [n + 1] - U_aged [ n])

ここで、Tauはフィルタの時定数です。ゼロデルタの限界では、この は指数関数的減衰を与えます(古い値は 時間Tauの後にその値の1/eに減少します)。実装では、実行中の加重合計U_agedを保持するだけで済みます。

deltatは1になり、タウは 'aging constant'を指定します。ステップ数は1/eへのサンプルの寄与を減らすために必要です。

関連する問題