2012-03-19 10 views
3

速度値の配列を加速値に変換しようとしています。私は加速が速度の積分であることを理解していますが、これを達成する方法はわかりません。私はMATLABを使用していますので、誰でもこの言語で解決策を提供できれば、とても感謝しています!以下のグラフ参照:速度から加速ピークを計算する

enter image description here

を黄色の線は、速度をプロットし、縦の点線は、(山と谷がpeakdetを用いて求め)、その波形の山と谷を示します。真ん中の緑色の横のものは、この質問とは無関係です。

私が分離しようとしているのは、上のカーブの大きな下り坂の最も急な部分です。誰もこれを計算する方法に関するアドバイスを提供することはできますか?

P.S.私はquad()がMATLABに統合するために使用される関数だが、この状況でそれを実装する方法を知らないことを認識しています。

+3

私はあなたが加速は速度の派生であり、積分ではないことを意味すると思います。また、これは一次元の問題か、これはちょうど高次元の動きの速度を記録しているのでしょうか?後者の場合、物事はやや複雑になります。 ...私はあなたが差ステンシルを使用し、あなたの速度曲線の数値微分を計算して加速を得ることができると思います。 Matlabの 'diff()'関数と 'gradient()'関数をチェックしてください(ただし、より良いステンシルを使って自分でコーディングすることができます)。 – ely

+0

ありがとうございました。それは一次元です。あなたの「グラデーション」の提案は、私が探しているかもしれないようです。 – CaptainProg

答えて

1

加速は、速度のの派生語です。

あなたの速度値がvに保存されている場合は、vは本物ではなく、合成信号である場合、aはかなりうるさい可能性があることに注意してください

a = diff(v) 

vの迅速な数値微分を得ることができます、あなたがそれをどのように使用するかに応じて、いくつかのスムージングが順調である可能性があります。

+0

右辺の最も急峻な部分を探したいので、 '[val、idx] = max(a);'などを追加することができます。 –