- ベストアンサー
波形のタイプを判定
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
波形がどれだけ似てるかを判定するソフトの決定版は、たぶんないです。というのは「似てる」という人間的な判定基準が、そもそもアイマイだからです。問題状況に応じてケースバイケースに処理されるのが実情でしょう。 という訳で以下、一般的な話です。 例えば質問文にあげられている波形の例は、かなり明確な周期性を持っています(フリーハンドで適当に描くと、そうなりますよね?(^^))。こういう場合は、フーリエ変換を行って(FFTすると良くいわれます)、振幅スペクトルを調べます。そうするとスペクトル分布と卓越周波数が概ね等しければ、超概ね似た波形というファジーな(^^;)判断ができます。 ※フーリエ変換のフリープログラムは、けっこうたくさん転がっています(^^)。 もう一つ良く使われるのは、相互相関係数です。これは対象波形をg(t),基準波形をf(t)としたとき、 A=∫g(t)・f(t) dt B=(∫g(t)・g(t) dt)^(1/2) C=(∫f(t)・f(t) dt)^(1/2) Cor=A/B/C で計算します。 相互相関係数Corは必ず -1≦Cor≦+1 の値を取り、f(t)とg(t)の形が完全に相似なら±1です。-1の場合は、f(t)とg(t)の正負が逆転した相似です。通常は0.5≦|Cor|なら「けっこう似ている」というファジーな判断をします。 ※相互相関プログラムは、ちょっとお高い波形解析ソフトには必ず付いていますが、じつはExcelの数式を使えば、A,B,Cの値はすぐ出せます(^^)。
その他の回答 (2)
- masudaya
- ベストアンサー率47% (250/524)
問題がどうなれば良いのか分かりませんが, マッチトフィルタという考え方も良いかもしれません. 相互相関をディジタル的に各時間ごとに算出します. 欲しい信号よりも十分に高いサンプリングで信号を サンプリングしておきます.その値を入れたメモリを用意して 入ってきた信号をおなじサンプリングレートでサンプリングして 順々にシフトレジスタに入れていきます. メモリに入っている内容とシフトレジスタに入っている内容を かけ算して,総和を取ると相互相関の係数に比例します. これだと,出力の相互相関の値だけを見て判定することが可能 (いくつ以上ならOKとか)になります. 詳しくはMatched Filterやマッチドフィルタ,マッチトフィルタ,整合フィルタ 等で調べてみてください.
お礼
ありがとうございます。 時間をかけて色々と試してみます。
- Nebusoku3
- ベストアンサー率38% (1479/3858)
指紋認証ソフトを応用できるかもしれません。(自分では未実施。アイデアのみ) >まず考えうる波形のパターンをたくさん用意してその中のどれに一番近いか、というようなやり方をするのかな・・・ ↓ 指紋の代わりに、その方法がつかえるのではないでしょうか。 参考URL: サイト自体の検証はしておりませんのでソフトの安全性はご自分でご確認ください。(しつこいのが有るかもしれません) http://jp.softyp.com/fingerprint-authentication-downloads.html https://sourceforge.net/projects/biometricsdk/ http://fvs.sourceforge.net/ http://ffpis.sourceforge.net/
お礼
ありがとうございます。 指紋認証はほぼ完全に一致しているかどうかを見る技術で、 今やりたいと思っていることは グラフの変化のだいたいの傾向がそのタイプであるかどうかを見る、 という少しファジーなことですので 指紋認証ソフトを利用するのは少しきびしいかもしれません。
お礼
ありがとうございます。 お礼をつけるのが遅くなってしまい申し訳ありません。 やはりそのあたりの手法になりますよね。 私のケースの場合に 何とかそれなりにうまくやれるかどうか考えてみます。