2

5 分間に 1200 個の振幅データ サンプルがあり、データには 4 ~ 5 個の「スパイク」があります。これらは互いに近くにある可能性があるため、「肩」が現れることがあります。データには多少のノイズが含まれる場合もあります。

ここに画像の説明を入力

する必要がある:

  • これらのピークが発生する時間をプログラムで決定し、
  • 最終的に曲線の積分を決定して、近くの隣人からの振幅を無視して、各離散ピークの下の領域を見つけます。

後者の要件により、各コンポーネントの関数を導出し、その関数を使用して下の面積を計算する必要があると思います。

これは離散ウェーブレット変換の問題ですか? フーリエ変換?短時間フーリエ変換?他の何か?これを支援する Java ライブラリはありますか?

合計すると元のデータ曲線が得られる 5 つの方程式を決定する方法を探しています。おそらく、これらのガウス曲線のようなものです(私が目で見ただけです)

ガウス曲線

4

3 に答える 3

1

ピークにある種の理論モデル (ガウスなど) がある場合、各ピークの周りにいくつかの点を使用して各ピークの回帰適合を行い、導出されたパラメーターを指定してそのモデルの積分を調べることができます。 .

于 2012-02-17T19:33:14.267 に答える
0

私があなたの質問を正しく理解していれば、これはウェーブレットまたはフーリエ変換とは何の関係もありません。

ピークを見つけるには、各データサンプルを順番にループして、隣接する値を比較します。増加した後に減少するときはいつでも、ピークがあります。実際には、ノイズによる誤ったピークの検出を防ぐために、いくつかのフィルタリングを適用する必要があります。単純な平均フィルター。ノイズがそれほど強くない場合は、複数のパスで問題を解決できる可能性があります。フーリエ変換を使用してフィルタリングを行うこともできますが、それは必要ないと確信しています。

面積を計算するには、各サンプルペアを列として扱うことができます。各列の幅は等しく(サンプルは時間的に等距離にあるため)、高さは2つのサンプルの平均であり、面積は幅*高さです。次に、すべての列の面積を合計します。長方形の列の代わりに平行四辺形を使用するなど、ベットの精度を得る方法は他にもあります。

于 2012-02-16T16:06:25.630 に答える
0

ピークを見つけるには、このようなことを試すことができます...

  • サンプルの 3 つのポイントを取得します。
  • 最後の値と次の値を比較すると、ピークが発生する場所を見つけることができます
  • 現在の値が前回と次の値よりも大きい場合、ピークが発生します

これがmatlabでのmake方法です!

半複雑なシナリオで極大値と曲線ウィンドウを正しく検出する方法は?

ピークが得られた場合は、放物線の一般的な形式である y 軸の放物線式をマウントできます。

y = ax^2+ bx + c

次に、曲線のピークが点で発生する場合、たとえば: y = 3 放物線は 1 つですか =:

f(x) = y = -3x^2 + 6x

その後、x 軸の曲線の始まりと終わりを見つける必要があります。

これで、Integral Area を適用する準備が整いました!

ここに画像の説明を入力

b = x 軸で見つけた上限点

a = x 軸で見つけた下点

そして最後に、あなたは面積を持っています

于 2012-02-16T15:56:51.187 に答える