• ベストアンサー
  • 困ってます

FFTを使って信号から特定の周波数を抜き去る方法

FFTを用いてある時系列データから特定の周波数の成分を抜き去ろうと思っていますが、 うまくいかないのでお伺いします。 調べてみると、スペクトルを出すとき、例えば同じ振幅で周波数の異なるの正弦波を 10個入れても全て同じ振幅にならず、振幅の大きさにばらつきが出ていて周波数成 分の成分の推定がうまくいっていないようです。FFTの2乗のデータを小さな周波数区 間で積分してスペクトル密度にしても、先ほどの10個の正弦波の振幅がそろわない のと、周波数推定が悪くなりうまく、引き去れなくなっています。 よくある状況だと思いますが、どういう工夫が必要なのでしょうか。 ちなみに、FFTのルーチンはnumerical recipeとFFTWの二つで試しました。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数1076
  • ありがとう数12

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

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

0にする部分を 少し多めにする。 さらに詳しい計算が必要なら、 サンプリングレート データ数 問題としている10の成分の周波数 FFTの結果のどの成分何ヘルツを表しているかの 計算式を記載してください。 逆フーリエ変換の結果 を書いてください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

大変役に立ちました。 ありがとうございました。

その他の回答 (1)

  • 回答No.1

1.測定したときのサンプリング間隔を考慮して 何番目のデータが何ヘルツに相当するかを考える。 2.データは複素タイプである。 3.周波数成分はその鏡像と対で現れる。 4.問題となる周波数に対応する成分を0に変える。 5.逆フーリエ変換をする。 以上。 お金があるなら DADiSPとUnit/CRF を買う。 買う前に、データを送ってテスト結果の 画像を見ておくと良い。 そのようにお願いしてみる。 そんなとこ。

共感・感謝の気持ちを伝えよう!

質問者からの補足

おっしゃっていることは分かります。 問題は、スペクトルの推定が悪いときには うまく引きされないので、どうしているのかを聞きたかったのです。 例として出したのは、よく知られているFFTのルーチンを使っても 正しく振幅が推定できないので、普通はどうやっているのか 伺いたかったものです。 DADiSPとUnit/CRFというのは知らないのですが 自作のプログラムでやりたいので、お願い致します。

関連するQ&A

  • 特定周波数の取り出しについて

    2点質問させて下さい。 縦480x横640の画像(チャート)データ を480のファイルに1ファイル640個のデータとして保存して その1ファイルにある特定の周波数がどのくらい 含まれているかを抽出する作業をExcelにて行っております。 (将来的にはソフト制御を考えています) 特定の周波数を抜き出す方法として データに対して、抽出したい周波数の正弦波との積を取り そのデータを積分して値を求めようと考えておりますが その特定の周波数の値を変化させた時に、結果がマイナス値 が出てくる場合があります。 私の認識ですと、マイナス値が出てくる事は無いと思って いたのですが、これは私の方法が間違っているのでしょうか? ちなみに各種データは次のとおりで求めています。 サンプリング周期 Δt [s] = 1 / 640 = 0.0015625 ω(特定周波数10Hzの場合)= 2*PI()*10Hz= 62.8 正弦波          = sin(サンプリング時間xω) また、上記の周波数成分を抜き出すのと似ていますが ある範囲だけの周波数成分(バンドパスフィルタ?)の ような事を行いたい場合どのようにすればよいかご教授 していただけないでしょうか?参考になる書籍、HPなど でも紹介していただけるとありがたいです。 自分なりに勉強しているのですが、なかなか進まないので ほとほと困り果ててます どうぞ皆様のお知恵をおかしください。 よろしくお願いします。

  • エクセルで周波数の解析?

    いくつかの周波数の正弦波のデータがあるのですが、これをエクセルでグラフにしました。これから、位相とそれぞれの振幅を調べたいのですが、エクセルでこれは計算できるのでしょうか?可能ならどのように行うといいのでしょうか・

  • 周波数応答

    制御理論において周波数応答というのがありますが、 周波数応答とは正弦波を入力したとき、その正弦波の周波数によって 順次変化する定常時の出力のことですよね? さらに、伝達関数の周波数応答を調べれば周波数特性が得られ、 システムの安定、不安定が班別できるようになる ということなのですが、 正弦波を入力した場合だけしか考えなくて良いのですか? このままだと、正弦波を入力した場合の システムの安定、不安定しか班別できなくて、 正弦波をいくつも重ね合わせたような不規則な 波の入力をしたときの周波数応答が分からない と思うのですが・・・。

  • 単振動+ホワイトノイズの時のFFTの振幅

    振幅ルート2(実効値1)の正弦波(周波数f)に標準偏差が0.1のガウシアンホワイトノイズが重畳したとき、FFTで算出される周波数fの振幅はどう変化するのでしょうか?(窓関数による誤差は無視した場合) よろしくお願いします。。 感覚的には(1^2+0.1^2)^0.5なのですが・・・・

  • 瞬時周波数

    よく角度変調で,その位相項を微分したものを瞬時周波数と定義してあります. 1)では,振幅変調では瞬時周波数とは意味をなさないのでしょうか? というのは,振幅変調ではエンベロープの上昇時と下降時で周波数が異なると聞いた気がして,このことが瞬時周波数で考えているのではないかと思ったのです. 2)そもそも複数の周波数成分が混合した場合,瞬時周波数とはどうなるのでしょうか? 振幅がわからないので,こんなことを考えています. 3)FFTなどを用いずに,周波数を求める方法として下記は正しいでしょうか? 直接観測値から周波数を読み取るには,周波数成分が1つであれば2点もあれば振幅と周波数が三角関数の連立方程式を解いて導けると思います. (サンプリング定理は満たしているとし,観測値はサンプリング間隔毎にx(t), x(t+τ), ..., x(t+nτ)とする.) 多周波数の混合となった場合も,いくつの周波数成分があるかを前もってパラメータとして知っていれば,観測値の個数>未知数の個数を満足すれば解ける気がします. (ノイズとりあえず無しとしてです.) 4)3)で解いたものはやはり瞬時周波数ではないような気がしますが,如何でしょう? 質問が多くてすみません.混乱しています.よろしくお願いします. この考え方

  • FFTの結果ついて

    ある50kHzの信号を1024点FFTにかけ、横軸周波数、縦軸をパワースペクトルに変換しました。  しかし、0Hzのところにとても大きな値が出力されました。 3Hzの正弦波を入力した際にはちょうど3Hzのところにピークが現れたので計算は合っていると思うので、原因がよくわかりません。   後、スペクトルをdb表示にしたいのですが、計算方法がわかりません。 申し訳ないですが、どなたか教えて下さい。

  • 周波数帯域のある信号をFFTに掛ける場合、処理結果はどうなるのでしょう

    周波数帯域のある信号をFFTに掛ける場合、処理結果はどうなるのでしょうか? 私は周波数帯域が100~10,000HZのマイクを使い録音し、そのデータを取り出し、 自作したプログラムを用いて、サンプリング周波数32768HzでFFTを掛けて、 信号の周波数特性を調べています。 ただ、FFTの処理結果によると、周波数帯域外の100HZ以下の領域に、周波数帯域内 と比べて大きな特徴が見られました。 そこで質問なのですが、この場合、自作したプログラムにミスがあるのか、 周波数帯域外の信号を録音してしまっているのか、それとも両方なのか、 それ以外にも理由があるのか、その辺りについて教えて頂ければと思います。 周波数解析の分野の理解が浅いため、酷く初歩的な質問であるかもしれませんが、 どうかよろしくお願いします。

  • FFTを使って信号を周波数変換する方法を教えてください。

    音信号を周波数変換するプログラムを作成しています。 FFTを使って実現しようとしているのですが、うまくいきません。 現時点で作った方法では、 (1)FFTする。結果は配列x_re[NFFT]、x_im[NFFT]に格納。(x_re:実数部 x_im:虚数部 NFFT:ポイント数、配列の内容としては周波数の低い順に結果データが並んでいる) (2) x_re,x_imの内容をずらす。(例えば以下のように配列内容を1つずらせばIFFTをした時周波数が高くなるはず) for(i=0;i<NFFT-1;i++){ x_re[i+1]=x_re[i]; x_im[i+1]=x_im[i]; } (3)配列x_re[NFFT]、x_im[NFFT]に対しIFFTする。 FFT・IFFTが正しく動作するのは確認しています。 (動作実績も結構あります。(2)を省略し(1)(3)だけとすれば出力結果は入力結果と同じ(出力音声を聴いた感じで)になるので、正しく動作していると思います。) よって(2)が間違っていると思います。 (2)をどのようにすれば周波数変換できるのか教えてください。また今の所FFTを使おうとしているのですが、別に入力信号を周波数変換できればOK(周波数を上げたり下げたりしたい)なので、その方法があれば教えてください(><)

  • 周波数の求め方

    正弦波交流電圧eの周波数fを求める問題で e=EmSin314t   の周波数fが50Hzになるのがわかりません。 ωt=2πf=314 ↑に代入すると0.87222Hzになってしまいます。 解き方を教えてください。よろしくお願いします。

  • 周波数応答の検証方法

    周波数応答をFFT解析したいのですが、振幅は1つの条件で周波数のみを変化させて検証を行えば良いのでしょうか? 例 振幅Aについて周波数D~E の様な試験 或いは振幅によっても周波数応答が異なるのであれば、 例 振幅Aについて周波数D~E 振幅Bについて周波数D~E 振幅Cについて周波数D~E この様な条件で試験をし、振幅毎にFFT解析して複数のボード線図を作成する必要があるのでしょうか? 一般的な周波数応答を解析するための試験方法をご教示頂ければ嬉しいです。 宜しくお願い致します。