アプリ版:「スタンプのみでお礼する」機能のリリースについて

FFTについて質問があります。

あるシミュレーションのために
・サンプリング周波数48kHz
・量子化24ビット
・1kHzのサイン波
のデータを作って、それをFFTにかけてみると
裾野が広がり、フロアの高いスペクトラム
となってしまいました。(データは4096ポイント、Hanning窓)

ポイント数が少ないことによる劣化だと考え、データポイントを
65536ポイントで取ってみると綺麗なスペクトラムとなっており、
データの作り方としては間違っていないのではないかと考えています。

一般的にFFTはデータポイントが多い方が、FFTをとったときに、
裾野広がらず、シャープなスペクトルを得ることはわかっています。
が、そこを何とか少ないポイント数で綺麗なFFTを得られるような
入力データは作れないものでしょうか?

出所は不明ですが、私の持っている別のデータを入力として用いると
少ないポイントでも綺麗なFFTを得ることが出来ているので、
何かデータを作るコツのようなものがあると思って投稿させて
いただきました。

どなたか詳しい方がいらっしゃいましたら、ご教授お願いします。

A 回答 (1件)

サイン波(あるいは一般に周期Tの関数)であるなら、窓関数など使わず、


データの幅を周期の整数倍に合わせればきれいになりますよ。

つまり、FFTのデータ数をN、nを任意の自然数として、
サンプリング周期をnT/Nにとります。

窓関数を使うなら、信号をf(x)、窓関数をw(x)、
それぞれのフーリエ変換をF(s), W(s)とすると、
窓関数をかけたフーリエ変換

∫[-∞→+∞] f(x)w(x) e^{isx}dx

はF(s)とW(s)の畳み込み

(1/2π)F*G(s)=(1/2π)∫[-∞→+∞] F(t)W(s-t) dt

になるので、W(s)をせまく、つまりw(x)を広く取れば広がりは抑えられるはずです。
(係数(1/2π)はフーリエ変換の定義により変わります。)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
確かに、周期関数であれば、窓関数をかけなくても
適切なポイント数を取れば不連続点が発生しないですね。
適切なポイント数を提示していただいたおかげで
無事解決することが出来ました。

本当にありがとうございました!
これにて質問を締め切ります。

お礼日時:2009/12/29 23:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!