- ベストアンサー
特定の周波数レベルだけ取り出したい
ある時間関数f(t)がありまして、その中から特定の周波数のレベルだけリアルタイムに取り出したいのですが、その処理をするCPUの処理能力に限界がありFFTなどという高級なことはできません。ある一つの周波数についてだけでよいので簡単に取り出す演算方法はないでしょうか。
- nanashisan
- お礼率96% (268/278)
- その他(学問・教育)
- 回答数3
- ありがとう数4
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その周波数の振幅を乗算して、フィルタ関数で 一定周波数以下を抜きだして下さい。 フィルタ関数もめんどうなら、 単に平均化でも大丈夫です。
その他の回答 (2)
- jojiirofu
- ベストアンサー率55% (5/9)
特定の周波数が与えられているとすると,下の回答のようにその周波数をもつ正弦波を乗算します.この結果,特定の周波成分と正弦波信号の周波数の和と差の成分が現れます.和の方は低域フィルタか積分演算で除きます.差の方は正弦波と特定周波数成分と同じ成分の強度を表しています.すなわち,差の成分(直流成分)がその強度を表していますのでこれを除去することは情報を捨ててしまうことになります.この直流成分は正弦波と特定成分との位相差を表しています.従って強度を調べるためには振幅と位相情報の両方が必要になります.現実にはFFTを使うのが一番と思います.フィルタを通す方法は結局周波数領域での畳み込みが必要になりますのでFFT以上に時間がかかります.時間関数の周波数帯域がどの程度かわかりませんがソフトウエアで行うには相当制限があります.ソフトウエアのサイトで例えばVectorでfftと検索すればオーディオ帯域のリアルタイム表示の可能なフリーソフトがあったと思います.参考にしてはどうでしょうか.
お礼
FFTのソースコードは持っているのですが、CPUの制約で今回はやっぱり使えそうにありません。ありがとうございました。
- ametsuchi
- ベストアンサー率31% (81/257)
特定の周波数とは、Givenと思っていいのですね? であれば、あとは、「位相」の問題だけですよね? 「位相合わせ」は初めに一度やれば済む話ではないんでしょうか? 位相のズレをいくつか試して、サンプル波(=正弦波またはその代用)との「畳み込み積分」的なことをやり、「ピーク」を見つける。ただし、ピークの見つけ方には「力ずく」にならないような工夫が必要でしょう。 初めに1回だけなら、別にFFTでもいいと思うんですけど...。 無責任な発言お許しください。
お礼
回答ありがとうございます。おそらく下のかたと似たような考えかと思います。 位相のズレはDC成分としてだけ出てくるようなので後から除けば良いのではないでしょうか。
関連するQ&A
- フーリエ変換の最大周波数
5kHzでAD変換した信号があり、解析したい成分は0~1kHzに含まれています。 上記の前提で、256点で128点オーバーラップしながらFFT処理を行った場合、FFTを行うデータ数をN、サンプリング間隔Δt(1/5kHz=0.0002sec)とした時、 分解能 Δf=1/N*Δt=19.53 最大周波数 Fmax=(N/2NΔt)-(1-Δf)=2480.47 という計算式をインターネット上で見つけました。つまり0~2480Hzまで20Hzごとのパワースペクトル時間変化が128点データが並ぶということになると思うのですが・・・・ 一方、最大周波数はFFTデータ数の半分だという記載も見つけました。すると、最大周波数は半分も128Hzだと思うのですが、どちらが正しいのでしょうか?
- ベストアンサー
- 数学・算数
- 周波数測定
PLL出力クロック(=矩形波)をデジタイザで取り込みFFT演算で求めようと考えています。条件は以下の通りです。 周波数:30MHz 形状:矩形波 使用モジュール:デジタイザ(fs:max100MHz) 演算方式:FFT??? 測定精度:0.01% なんだかピンときません。誰か良い方法を知りませんか?教えて下さい。周波数測定だからタイマーモジュールなどを使えば済むことなのですが、それができないため困っています。宜しくお願いいたします。
- 締切済み
- その他([技術者向] コンピューター)
- FFTを使って信号から特定の周波数を抜き去る方法
FFTを用いてある時系列データから特定の周波数の成分を抜き去ろうと思っていますが、 うまくいかないのでお伺いします。 調べてみると、スペクトルを出すとき、例えば同じ振幅で周波数の異なるの正弦波を 10個入れても全て同じ振幅にならず、振幅の大きさにばらつきが出ていて周波数成 分の成分の推定がうまくいっていないようです。FFTの2乗のデータを小さな周波数区 間で積分してスペクトル密度にしても、先ほどの10個の正弦波の振幅がそろわない のと、周波数推定が悪くなりうまく、引き去れなくなっています。 よくある状況だと思いますが、どういう工夫が必要なのでしょうか。 ちなみに、FFTのルーチンはnumerical recipeとFFTWの二つで試しました。
- ベストアンサー
- C・C++・C#
- FFTを使って異なるサンプリング周波数での周波数強度について
100Hzのsin波に対してFFTを行い周波数スペクトルを出したときのことです。 解析条件 サンプリング周波数・・・・44.1kHz , 22.1kHz FFTの点数・・・32768点 窓関数・・・ハニング窓関数 まず、サンプリング周波数44.1kHzで解析を行い、100Hzにメインローブが現れていました。 次に、サンプリング周波数22.1kHz以外は同様の解析条件で解析を行ったのですが、サンプリング周波数44.1kHzに比べて、100Hzのスペクトル強度が下がっていました。また、サイドローブは44.1kHzに比べて上がっていました。 スペクトル強度がサンプリング周波数によって変化するというのはありえるのでしょうか? それとも、私の組んでいるプログラムが間違っているという事なのでしょうか?どなたかご教授下さい。よろしくお願いします。
- ベストアンサー
- 科学
- 筋電の周波数成分について教えて下さい。
表面電極から差動アンプを通して検出した生の筋電波形をFFT演算してみたところ 全周波数成分は数Hz~数kHzでした。しかし、純粋な筋電成分は何Hz付近なのでしょうか? 負荷と筋電レベルの関係を調べたく、どの周波数成分の電圧レベルを見たら良いか分からないのです。 ちなみに電極固定箇所は前腕部の撓側手根屈筋付近です。 よろしくお願い致します。
- ベストアンサー
- 医療
- 瞬時周波数
よく角度変調で,その位相項を微分したものを瞬時周波数と定義してあります. 1)では,振幅変調では瞬時周波数とは意味をなさないのでしょうか? というのは,振幅変調ではエンベロープの上昇時と下降時で周波数が異なると聞いた気がして,このことが瞬時周波数で考えているのではないかと思ったのです. 2)そもそも複数の周波数成分が混合した場合,瞬時周波数とはどうなるのでしょうか? 振幅がわからないので,こんなことを考えています. 3)FFTなどを用いずに,周波数を求める方法として下記は正しいでしょうか? 直接観測値から周波数を読み取るには,周波数成分が1つであれば2点もあれば振幅と周波数が三角関数の連立方程式を解いて導けると思います. (サンプリング定理は満たしているとし,観測値はサンプリング間隔毎にx(t), x(t+τ), ..., x(t+nτ)とする.) 多周波数の混合となった場合も,いくつの周波数成分があるかを前もってパラメータとして知っていれば,観測値の個数>未知数の個数を満足すれば解ける気がします. (ノイズとりあえず無しとしてです.) 4)3)で解いたものはやはり瞬時周波数ではないような気がしますが,如何でしょう? 質問が多くてすみません.混乱しています.よろしくお願いします. この考え方
- 締切済み
- 物理学
- 時間領域と周波数領域
音声をリアルタイムで処理するプログラムをC言語で組んでいまして、 今はフィルタのプログラムをしている段階です。 具体的にはLPFとHPFです。 これらフィルタを施す際、フィルタリングは時間領域でするべきでしょうか? それとも周波数領域に変換してからフィルタリングするべきでしょうか? リアルタイム処理が目的なので、計算コストが少なくてすむ方を採用したいと考えています。 やはり周波数領域に変換するとFFT等が必要になってきますので、 時間領域の方が計算コストが少なくて済むのでしょうか。 どうかご意見をお願い致します。
- 締切済み
- C・C++・C#
お礼
素早く的確な回答ありがとうございました。 問題のほとんどはこれで解決しましたが、「単に平均化でも大丈夫です。」をもう少し解説いただけるとありがたいです。乗算する正弦波の位相によってはDC成分が出てきてしまうのですが。