[H8-ML(3573)] Re: A/D 信号のピーク検出手法
From: OCN <wathavy@xxxxxxxxxxxxx>
Date: 2003年07月07日(月)23時28分25秒
>櫻井です。
>わさびぃ様 ありがとうございます。
様なしで結構ですので・・

今日、櫻井さんのおかげで、ピークが平らで、取れる方法「ゲッツ!」(←おぃ!)
しました。
リアルタイムという点でかなりNGですが、
Data(i-2) < Data(i)
Data(i-1) < Data(i)
Data(i+1) < Data(i)
Data(i+1) < Data(i)
という条件で、Data(i)は、ピークですが、
これでは、ピークが平らだと漏れます。

で、考えたのですが,
(★A)
Data(i-3) < Data(i) &&
Data(i-2) < Data(i)  &&
Data(i-1) < Data(i)  &&
Data(i+1) - Data(i) < 0.05;//0.05っていうのは、ちっちゃい数の意味です
ので・・

のような条件ですと、平らになる直前ないしは、一番最初のデータが
条件にはまります。

反対に右あるいは、平らな右端のデータ、または、データが平らから下がると
きは、
(★B)
Data(i-1) - Data(i) < 0.05 &&;//=ある程度以下ちっちゃいの意味です.適
宜加工してください
Data(i+1) < Data(i)  &&
Data(i+2) < Data(i)  &&
Data(i+3) < Data(i)
のようにするといいですよね。
もしも、平らの真ん中がピーク(分解能が低くて見えないけれども)だとしま
すれば、
この(★A)と(★B)の中点だとしてあげたらどうでしょうか?
いい加減ですが、まぁどうせ見えないわけですし。

私の場合、平らになっているところでは、AD値が飽和しています。
そこで、(★A)と(★B)を使う条件としては、AD値がある閾値(MAXに
近い値)
を超えたところで、出番としてます。
それ以下は、ピークが一点になります。

櫻井さんの場合には、(★A)と(★B)を常に使うということになりませんか?
ご検討ください。


なお、私の場合、アルゴリズムの探索方法は、たとえば以下です。
マイコンなどから、AD後のデータを取得し、これをパソコンに転送します。
(アスキーとしてテキストなどに落とした)

これを、エクセルに読み込んで、VBAで簡単な条件を出して
どうしたらピークなり平らな箇所のエッジがとれるかを
黙々と探し出しました。

macさんの言われているような、よりDSPっぽい方法なら、
バチッとピークは出てくるはずです。
(が、具体的にわかんないっす。はい)

#株価チャートっていうのは、忘れてもらって結構です。
#出所はありません。一応わさびぃ自作のアルゴリズムです。(っていうほど
すごくないです)

わさびぃ

スレッド概略
[3523(R)](起点)
 └[3563(U)]
   └[表示中]
     └[3583(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]