1

MATLAB では、ガウス ウィンドウの 2 次導関数を生成して、曲線の高さを表すベクトルに適用する必要があります。曲線に沿った変曲点と最大値の位置を決定するには、2 次導関数が必要です。曲線を表すベクトルはかなりのノイズになる可能性があるため、ガウス ウィンドウを使用します。このウィンドウを生成する最良の方法は何ですか? gausswin 関数を使用してガウス ウィンドウを生成し、その 2 次導関数を取得するのが最善ですか? または、ガウスの二次導関数の式を使用して手動でウィンドウを生成するには? それとも、データにガウス ウィンドウを適用してから、すべての二次導関数を取得するのが最善でしょうか? (これらの最後の2つは数学的に同じであることは知っていますが、離散データポイントではどちらがより正確になるかわかりません)

高さベクトルの最大長は、約 100 ~ 200 要素になります。

ありがとうクリス

4

1 に答える 1

1

ガウス関数の二次導関数によって生成された重みで構成される線形フィルターを作成し、これをベクトルで畳み込みます。

ガウスの 2 次導関数の重みは、次の式で与えられます。

ガウスの 2 次導関数

どこ:

  • Tau はフィルターの時間シフトです。奇数のサンプルで長さ T の離散フィルターの重みを生成する場合は、tau をゼロに設定し、t が [-T/2,T/2] から変化できるようにします。
  • シグマ - オペレーターのスケールを変更します。シグマを T/6 の間の値に設定します。長いフィルター長が気になる場合は、T/4 に減らすことができます。
  • C は正規化係数です。これは代数的に導き出すことができますが、実際には、フィルターの重みを計算した後、常にこれを数値的に行います。周期信号を平滑化する際のユニティ ゲインについては、C = 1 / sum(G'') を設定します。

最初に平滑化し、後で導関数を取得することの同等性に関するあなたのコメントに関しては、それよりも複雑だと思います。2 番目のステップでどの微分演算子を使用しますか? 単純な中心差では、同じ結果は得られません。

スケールの異なる 2 つのガウス分布を使用してデータをフィルター処理し、結果として得られる 2 つのベクトル間の点ごとの差をとることで、ガウス分布の 2 次導関数に対する同等の (ただし概算の) 応答を得ることができます。そのアプローチについては、ガウスの差を参照してください。

于 2013-10-09T13:41:26.150 に答える