03-12-2007 05:09 AM
03-15-2007 07:15 AM
日本ナショナルインスツルメンツの塚崎です。
いつもお世話になっております。
Peak Detectorに関してのご質問についての回答です。
まず、配列の中にある連続した点を抽出します。
これは配列の最初から始めます。
例えば10点の点を抽出すると仮定します。
その10点の点を通る曲線に最も近い二次関数を計算し、その二次関数を微分します。
もしピークがなければ、
微分した式=0
の関係は成り立ちません。
ピークがあるときは必ず微分式=0となる解を持ちます。
その次は配列をひとつずらした10点を抽出し、また同じ作業を行います。
配列では整数xに対してのyの値を取りますが、ピークは小数部分まで計算されます。
配列をずらした後にもピークが確認される時は、その前までの計算結果によりさらに詳しい二次関数を作ることができ、結果の値もより詳しいものとなります。
データはノイズの乗っかったものになっているため、上の計算はノイズをスムーズ化してからなされます。
二次関数による近似値での算出とノイズにより、ピークの検出は必ずしも正しいものではありませんのでご了承ください。
03-15-2007 07:13 PM
塚崎 様
丁寧な解説有難うございました。
とても参考になりました。
03-18-2007 06:44 PM
お世話になっております。
実際に教えて頂いたように、配列の初めから指定した幅分だけ2次曲線に近似し、その幅内に 微分=0 となる
x がある場合、そのときの x を記録していくプログラムを作ってみました。
ただ、それだけでは、たくさんピークが発見されてしまいます。
「配列をずらした後にもピークが確認される時は、その前までの計算結果によりさらに詳しい二次関数を・・・」という
処理をもう少し具体的に教えていただけないでしょうか?
お手数ですが、回答よろしくお願いいたします。
03-19-2007 10:05 PM
03-20-2007 08:06 PM
木村 様
丁寧な解説有難うございました。
参考になりました。