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

100Hzのsin波に対してFFTを行い周波数スペクトルを出したときのことです。

解析条件
サンプリング周波数・・・・44.1kHz , 22.1kHz
FFTの点数・・・32768点
窓関数・・・ハニング窓関数

まず、サンプリング周波数44.1kHzで解析を行い、100Hzにメインローブが現れていました。
次に、サンプリング周波数22.1kHz以外は同様の解析条件で解析を行ったのですが、サンプリング周波数44.1kHzに比べて、100Hzのスペクトル強度が下がっていました。また、サイドローブは44.1kHzに比べて上がっていました。
スペクトル強度がサンプリング周波数によって変化するというのはありえるのでしょうか?
それとも、私の組んでいるプログラムが間違っているという事なのでしょうか?どなたかご教授下さい。よろしくお願いします。

A 回答 (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のどの位相で観測始めどの位相で観測終了するか様子が違うのでニジミ出し方が違う。これだとしたらサンプリング期間を十分に長く取る(データ点数巨大化)とかするといいかも。
    • good
    • 1
この回答へのお礼

どうやら問題は正規化の方法にあったようです。
丁寧な説明ありがとうございました。

お礼日時:2007/05/24 18:13

周期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を使うのは時間の無駄なのだ
    • good
    • 0

多分、それは窓関数の影響ではないでしょうか。



#プログラムは間違っていないとして。

100Hz の sin 波というのですから、理想の結果は 100Hz に鋭いピークが現れるはずです。でもそうはなっていませんよね?窓関数を施すと、多くの場合、ピークが広がり、ピークの最大値も減少します。

試しに窓関数なしで計算されてみてはいかがでしょう?ピーク値の違いは減ると思います。勿論、100Hz 以外の周波数成分も少し出て来てしまいますが。
    • good
    • 0

スペクトル強度がサンプリング周波数によって変化するというのはありえるのでしょうか?



ありえな話です

元が100Hzしか無いんだからこれ以外のスペクトルは存在しないんですから


それとも、私の組んでいるプログラムが間違っているという事なのでしょうか?

たぶん間違ってないです
サンプリングに誤差が発生します
その誤差ですね
出てきた差は・・・

サンプルリングにより標本とのあいだに語差が生じます
これによりスペクトル強度がサンプリング周波数によって変化が計算により誤差分が出ただけです

サンプリング周波数が低くなると誤差が大きくなります
    • good
    • 0

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