• ベストアンサー

スペクトルのグラフ

FFTをしてスペクトルを求めてグラフにしたいと思います。 理論が良く分かっておらず、私が考えたことが正しいのかどうか自信がないので、教えてください。 (1) X軸を周波数とするグラフの座標の数は、スペクトルのライン数になる。 スペクトルのライン数 = FFTの件数 ÷ 2.56 これが正しいと、X軸の最大値が周波数レンジになるはずですが…。

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

  • ベストアンサー
noname#65504
noname#65504
回答No.3

>X軸の最大値が周波数レンジになるはずですが…。 この質問は参考サイトの周波数レンジと、自分で造ったプログラムまたはエクセルなどによる解析結果の最大値が異なることに対する質問では似ないでしょうか? FFTでは、ナイキストによりサンプリング周波数の半分までの周波数しか解析できません。おそらく最大値というのはその値になっていると思います。 参照サイトの例を用いると、サンプリング周波数は25.6kHzですので、FFTで解析すると、その半分の周波数の12.3kHzまで算出することができるのです。 しかし、小野測器などの専用FFTアナライザーでは、ちょっと取扱を変えています(他のメーカーでも私が使用したことがあるFFTアナライザーはみんなそうなっていました)。 本来1/2まで解析できるのですが、それを変えて1/2.56までしか表示しないようにして、それを周波数レンジとしています。 2048個のデータからは1024個の解析ライン数ができるのですが、800個のラインで打ち切っているようです。 なぜそうしているのか、その理由はよく知りませんが、801以上の解析ラインに対するデータの信頼性の問題ではないかと思っています。 この取扱の違いが、一般的なFFTプログラムを用いて出されるX軸の最大値と小野測器のいう周波数レンジの違いとなって現れます。

real_neo
質問者

お礼

ありがとうございます。 とてもよくわかりました。 今までの悩みが解消されました。

その他の回答 (2)

  • tiger46
  • ベストアンサー率28% (2/7)
回答No.2

まだ詳しくURL先を見ていないので詳しいこといえませんが 2.56というのは、このFFTのサンプリング点の数なので 自分で処理をするとなると勝手が違ってくると思います。

  • inara
  • ベストアンサー率72% (293/404)
回答No.1

質問の意味がよく分からないのですが、例えば、Excelの「ツール」→「分析ツール」→「フーリエ解析」で、ある波形データをFFT演算した後に出てくるデータ列に対応する最小周波数と最大周波数を知りたいということでしょうか? Yes→時間間隔をΔt [s] として取った波形 A(1)~A(N) をFFTにかけて、B(1)~B(N)というデータ列が得られたとき、B(1)に対応する周波数 f1 [Hz]は、f1 = 1/(N*Δt)、B(2)の周波数は f2 = 2/(N*Δt)、・・・、B(N)の周波数は fn = 1/(Δt) となります。 例えば、Δt = 1ms でとった1024点からなる波形をFFTにかけたとき、周波数範囲は 1/1.024 Hz、2/1.024 Hz、・・・、1000 Hz になります。波形取り込み時間(N*Δt)が 1s なら f1 = 1Hz から 1Hz きざみのスペクトルになります。0.1Hzの分解能のスペクトルを得たいのなら、10秒間の波形データを取る必要があります。一方、最大周波数は、1/Δt ですので、10kHzまでのスペクトルを得たいのなら、Δt = 0.1 ms とする必要があります。 FFTだと N が2の倍数しか許されないので、(N*Δt)を 1s にしようとすると、Δt がキリのいい数値になりません(N = 1024 だと Δt = 1/1024 [s])。私個人としては、そういうのが気に入らないので、FFTでなくDFTを使って、N = 1000、Δt = 1ms とか、キリのいい数値にして計算したりします(N が10000未満ならExcel VBAで DFT 計算させてもそんなに時間がかからないので)。趣味の問題ですが。 Excelの分析ツールのフーリエ変換の結果は複素数で出てきますので、関数 IMABS(FFT後の数値)で絶対値に変換すれば振幅スペクトルになります。振幅をdB単位で出したいなら20*log10(IMABS(FFT後の数値))としてください。関数 IMABS()は「ツール」→「アドイン」で「分析ツール」にチェックしないと使えなかったと思います。

real_neo
質問者

お礼

ありがとうございます。 今FFTアナライザのようなものを作っています。 指定されたサンプリング件数と周波数レンジを使って、サンプリングしたデータをFFTし、リニアスペクトルのグラフを表示するものです。 http://www.onosokki.co.jp/HP-WK/c_support/newreport/analyzer/FFT3/fft_5.htm#mark2 ↑のページに書いてあることを参考しています。 質問も↑のページにあることを実現すれば良いかどうかを問う内容です。

関連するQ&A