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

FFTプログラムで問題が生じました。

C言語でFFTのプログラムを作成しています。入力として周波数の既知な正弦波を利用してプログラムの動作確認をしているのですが、サンプリング周期0.01secの状態でサンプリング数が4096点と8192点の時だけスペクトルの結果がおかしくなってしまいます。例えば、10Hzの入力に対して他の点数(512~32768点)では、きちんと10Hzの位置にスペクトルが現われるのですが4096点と8192点の時は、10Hzの他に同じ大きさの40Hzのスペクトルが現われてしまいます。入力が5Hzの時は、45Hzに現われます。ちょうど折り返し雑音のような誤作動なので何か明確な原因があるのではないかと思うのですが全く分かりません。このようなことはよくあるのでしょうか?それとも単にプログラムのミスでしょうか。回答お願いします。

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

  • 回答数1
  • 閲覧数383
  • ありがとう数0

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

  • ベストアンサー
  • 回答No.1
  • Rossana
  • ベストアンサー率33% (131/394)

ギブス現象でしょうか?ちょうど1周期に対するサンプルデータ数の整数倍でサンプリングしないと,綺麗なスペクトルでなく高周波成分が生じ広がりのあるスペクトルになります.サンプリング周波数はナイキスト周波数より高いので,エイリアシングではないと思いますが.

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

関連するQ&A

  • MATLABによるFFTと位相スペクトルについて

    純粋な正弦波信号 y=sin2πft ただし周波数f=500MHz をサンプリング周波数2.5GHz,サンプリング数128,256,512,1024の四パターンMATLABでFFTし、パワースペクトルと位相スペクトルを求めました。 結果、パワースペクトルは予想通り500MHzでピーク値をとったのですが、位相スペクトルは各サンプリング数ごとに全く違う値を取りました。 というわけで、 (1)理論上、正弦波の位相スペクトルはどのような値になるのか (2)なぜサンプリング数ごとに位相スペクトルの結果が大きく変わったのか この二点をご教授ください。よろしくおねがいします。

  • FFTの結果ついて

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

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

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

  • FFT/スペクトルに関して

    エクセルにてFFTを勉強しているのですが、FFT後に出てくる縦軸のスペクトルとは何でしょうか? 時間軸×音圧 ⇒ 周波数×音圧に変換したんですが、この縦軸は音圧ではなくスペクトルというものだと理解しています。このスペクトルが示すものは単にその周波数の成分が強い傾向にあるというのを示しているだけで、その周波数の音圧がいくらというのを示しているのではないのでしょうか? 現在、訳あってその周波数の絶対量を使用したいのですが、その数字に意味はないのか教えてください。

  • エクセルでのFFTについて

    今圧電ブザーを発振回路につないで発振させて,その出力をエクセルでFFTを行って共振周波数を調べています。ここで圧電ブザーにペンキを薄く塗って質量が増大することで共振周波数が下がると考えて実際に行ってみたら変化が見られませんでした。自分としては機械的には共振周波数が下がっていると思うのですが、それが検出できませんでした。これは何が原因でしょうか?数Hz程度の小さい変化だとしたらFFTでは分からないものなのでしょうか? ちなみにサンプリング時間は5.12msで、サンプリング周期は0.01msです。この二つの意味もよく分かりません。 あまりうまく質問できてないかもしれませんがどなたかお答えください。よろしくお願いします。

  • A/D変換器のサンプリング周期誤差について

    A/D変換器のサンプリング周期誤差について 簡易FFTアナライザーの作成を考えております。 そこで、A/D変換に考えている装置が1msでのサンプリング周期で ±10usのサンプリング周期誤差があります。 この装置からの入力データで簡易FFTアナライザーの作成は可能でしょうか。 (たとえは、300Hzぐらいの波形を測定する時に、サンプリング ノイズでスペクトル  が見えなくなり、使用できない等) 測定周波数はDC~400Hz程度で1024点程度のデータ点数を考えています。

  • FFTのサンプル点について

    FFTについて質問したいのですが、ある本を読んでいたら正弦波を時間軸に離散化(そこでは、一周期8サンプル)して、この離散時間信号のスペクトルを 512 点 FFT を用いて見てみましょう、と書いてありその周波数特性の結果がありました。 僕は、今まで512 点 FFT の512点というのは時間軸に一周期内で512点と思っていたのですが、違うのでしょうか?

  • FFTデータ数が少ないと直流成分が大きく変動する?

    FFTの振幅スペクトルから実効値算出のために単一正弦波をFFTしてみると、(1)のように計算データ点数が少ない場合、窓関数の位置によって「0Hz直流成分」のFFT結果値が大きく変動してしまいます。((2)(3)は窓関数がどの位置でも問題ありません。) この(1)(1サイクル64点=FFTデータ数64個)のような計算の場合、どのように実効値算出すればよいでしょうか?  また、正常な場合でもこれらのサンプル間隔(0、30Hz、60Hz等)の"すき間の部分”は考慮しなくても、全て計算結果に出力されているということでよいでしょうか? 単一正弦波(60Hz)   ((最大値5388.9v=実効値3810.5v)、サンプリング3.84KHz=1サイクル64点)   (実効値換算式=前半の√(実数^2+虚数^2)の合計/(FFTデータ数/2)/√2) (1)FFTデータ数 64個⇒0Hz(0.00~1905.2)???、60Hz(1905.2),120Hz(952.6)、180Hz(0.0)、          ⇒合計( ??? ) (2)FFTデータ数128個⇒0Hz(0.0), 30Hz(952.6),60Hz(1905.2),90Hz(952.6), 120Hz(0.0)、          ⇒合計(3810.4) ≒実効値 (3)FFTデータ数256個⇒0Hz(0.0),15Hz(0.0),30Hz(0.0)、                45Hz(952.6),60Hz(1905.2),75Hz(952.6), 90Hz(0.0),           ⇒合計(3810.4) ≒実効値

  • 周波数解析 FFTと自己回帰モデルについて

    いつもお世話になっています。 周波数解析で質問です。 十分なサンプリングレートで、十分な時間記録したデータを使う場合、自己回帰モデルを使った周波数解析は必要ないでしょうか。 現在、FFTを使ってあるデータの周波数解析をしていますが、ものの本によれば、そのデータを扱う場合は、FFTよりARモデルを使った周波数解析の方がよい、と書いてありました。しかし、サンプリングレートが細かすぎて、モデルの次数を決定するのも、妥当かどうか疑問が残ります。一般的に、MEMなどのARモデルを使った周波数解析は、周波数分解能の悪さを補うのが大きな目的ですか?

  • FFTサンプル点について

    FFTについて質問したいのですが、ある本を読んでいたら正弦波を時間軸に離散化(そこでは、一周期8サンプル)して、この離散時間信号のスペクトルを 512 点 FFT を用いて見てみましょう、と書いてありその周波数特性の結果がありました。 僕は、今まで512 点 FFT の512点というのは時間軸に一周期内で512点と思っていたのですが、違うのでしょうか?