- ベストアンサー
FFTを使って異なるサンプリング周波数での周波数強度について
100Hzのsin波に対してFFTを行い周波数スペクトルを出したときのことです。 解析条件 サンプリング周波数・・・・44.1kHz , 22.1kHz FFTの点数・・・32768点 窓関数・・・ハニング窓関数 まず、サンプリング周波数44.1kHzで解析を行い、100Hzにメインローブが現れていました。 次に、サンプリング周波数22.1kHz以外は同様の解析条件で解析を行ったのですが、サンプリング周波数44.1kHzに比べて、100Hzのスペクトル強度が下がっていました。また、サイドローブは44.1kHzに比べて上がっていました。 スペクトル強度がサンプリング周波数によって変化するというのはありえるのでしょうか? それとも、私の組んでいるプログラムが間違っているという事なのでしょうか?どなたかご教授下さい。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
問題は2つに分けられると思います。 (1)両者ともサンプル点数Nは同じにしたのでしょうか。 あるいはサンプリング期間は同じとして44.1kHzのサンプル点数Nは22.1kHzのサンプル点数の2倍としたのでしょうか。 離散フーリエのやりかたにはサンプル点数Nをどう正規化するか、主として三つの流儀があります。 a. Nの平方根で割る。 b. Nで割る c. 何もしない。 どれが正しいということではなく、この約束事に則って逆フーリエのときのNの扱いも決まり、フーリエ→逆フーリエで元に戻り辻褄が合うようになっています。 どれでプログラムを組んだか次第ですが、例えば流儀bのプログラムにおいて、44.1kHzのサンプル点数Nは22.1kHzのサンプル点数の2倍とした場合は100Hzの値は同程度となると思います(次項(2)の件を除き)。 まずこの正規化の件をちょっと検討されたらどうでしょうか。 (2)サイドローブの件はこっちだと思いますが:有限のサンプル期間ですよね。そしてサンプリング期間は100Hzの周期10msの整数倍になっていないですよね。その場合、ぴったり100Hzの線スペクトルではなく、その近傍の周波数成分にもパワーがにじみ出して観測されるはずです。にじみ出したぶん100Hz成分は減るはず。44.1kHzと22.1kHzではサンプリングを100Hzのどの位相で観測始めどの位相で観測終了するか様子が違うのでニジミ出し方が違う。これだとしたらサンプリング期間を十分に長く取る(データ点数巨大化)とかするといいかも。
その他の回答 (3)
- guuman
- ベストアンサー率30% (100/331)
周期Tの周期関数をサンプリング周波数fsでサンプリングする場合に T・fsが整数であって DFTのサンプル数が T・fsの整数倍である限り 窓を使う必要は無い T・fs=サンプル数が最も経済的 そしてT・fs=サンプル数の場合 その関数が正弦関数であれば 2点の絶対値が同じであり その2点以外すべて0になる 正弦関数が 100Hzであるならば サンプリング周波数が 44100Hz,22100Hzの場合100の整数倍なので問題ないが サンプル数32768が問題である サンプル数を2のべき乗ににしたいのであれば サンプリング周波数fsを fs/100を2のべき乗になるように fsを変えるか100Hzを変えるかしたほうが良い DFTを正確にする方法はそれ以外に無い 近似でよいのであれば馬鹿みたいにサンプル数を増やせばよいのだが この辺を理解するには 周期1/f0の関数x(t)の離散時間信号 xs(t)=Σ[k:-∞<k<∞]・x(k/fs)・δ(t-k/fs) のフーリエ変換を求めれば分かる もしあなたにこれを求める力量があるのならば補足に書け x(k/fs):=x[k] としその場合 x[k+fs/f0]=x[k] となるからこれを使え これを求めることができればDFTの意味が完璧に分かる もしあなたにそれほどの力量が無いのならば ディジタル信号処理理論の勉強を始めるが良い わけがわからぬままDFTを使うのは時間の無駄なのだ
- chirubou
- ベストアンサー率37% (189/502)
多分、それは窓関数の影響ではないでしょうか。 #プログラムは間違っていないとして。 100Hz の sin 波というのですから、理想の結果は 100Hz に鋭いピークが現れるはずです。でもそうはなっていませんよね?窓関数を施すと、多くの場合、ピークが広がり、ピークの最大値も減少します。 試しに窓関数なしで計算されてみてはいかがでしょう?ピーク値の違いは減ると思います。勿論、100Hz 以外の周波数成分も少し出て来てしまいますが。
- nrb
- ベストアンサー率31% (2227/7020)
スペクトル強度がサンプリング周波数によって変化するというのはありえるのでしょうか? ありえな話です 元が100Hzしか無いんだからこれ以外のスペクトルは存在しないんですから それとも、私の組んでいるプログラムが間違っているという事なのでしょうか? たぶん間違ってないです サンプリングに誤差が発生します その誤差ですね 出てきた差は・・・ サンプルリングにより標本とのあいだに語差が生じます これによりスペクトル強度がサンプリング周波数によって変化が計算により誤差分が出ただけです サンプリング周波数が低くなると誤差が大きくなります
お礼
どうやら問題は正規化の方法にあったようです。 丁寧な説明ありがとうございました。