• ベストアンサー
  • 暇なときにでも

特定の周波数レベルだけ取り出したい

  • 質問No.46299
  • 閲覧数877
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 96% (268/278)

ある時間関数f(t)がありまして、その中から特定の周波数のレベルだけリアルタイムに取り出したいのですが、その処理をするCPUの処理能力に限界がありFFTなどという高級なことはできません。ある一つの周波数についてだけでよいので簡単に取り出す演算方法はないでしょうか。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 40% (1358/3355)

その周波数の振幅を乗算して、フィルタ関数で
一定周波数以下を抜きだして下さい。

フィルタ関数もめんどうなら、
単に平均化でも大丈夫です。
お礼コメント
nanashisan

お礼率 96% (268/278)

素早く的確な回答ありがとうございました。
問題のほとんどはこれで解決しましたが、「単に平均化でも大丈夫です。」をもう少し解説いただけるとありがたいです。乗算する正弦波の位相によってはDC成分が出てきてしまうのですが。
投稿日時:2001/03/01 14:09

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 55% (5/9)

 特定の周波数が与えられているとすると,下の回答のようにその周波数をもつ正弦波を乗算します.この結果,特定の周波成分と正弦波信号の周波数の和と差の成分が現れます.和の方は低域フィルタか積分演算で除きます.差の方は正弦波と特定周波数成分と同じ成分の強度を表しています.すなわち,差の成分(直流成分)がその強度を表していますのでこれを除去することは情報を捨ててしまうことになります.この直流成分は正弦波と特定成分との位相差を表しています.従って強度を調べるためには振幅と位相情報の両方が必要になります.現実にはFFTを使うのが一番と思います.フィルタを通す方法は結局周波数領域での畳み込みが必要になりますのでFFT以上に時間がかかります.時間関数の周波数帯域がどの程度かわかりませんがソフトウエアで行うには相当制限があります.ソフトウエアのサイトで例えばVectorでfftと検索すればオーディオ帯域のリアルタイム表示の可能なフリーソフトがあったと思います.参考にしてはどうでしょうか.
お礼コメント
nanashisan

お礼率 96% (268/278)

FFTのソースコードは持っているのですが、CPUの制約で今回はやっぱり使えそうにありません。ありがとうございました。
投稿日時:2001/03/02 18:36
  • 回答No.2

ベストアンサー率 31% (81/257)

特定の周波数とは、Givenと思っていいのですね?

であれば、あとは、「位相」の問題だけですよね?

「位相合わせ」は初めに一度やれば済む話ではないんでしょうか?

位相のズレをいくつか試して、サンプル波(=正弦波またはその代用)との「畳み込み積分」的なことをやり、「ピーク」を見つける。ただし、ピークの見つけ方には「力ずく」にならないような工夫が必要でしょう。

初めに1回だけなら、別にFFTでもいいと思うんですけど...。

無責任な発言お許しください。
お礼コメント
nanashisan

お礼率 96% (268/278)

回答ありがとうございます。おそらく下のかたと似たような考えかと思います。
位相のズレはDC成分としてだけ出てくるようなので後から除けば良いのではないでしょうか。
投稿日時:2001/03/01 14:15
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

ピックアップ

ページ先頭へ