Ooura の FFT を使用してホワイト ノイズを分析しています (ノイズの 44100 サンプルで持続時間 75368 smp)。私が持っている結果は非常に奇妙です: サンプル数で割っても、1.0 未満です。
私はRDFTと逆RDFTを使用しています
実際には、次のようなマグニチュードの結果があります。
m1 3.47157
m1 8.50726
m1 29.0233
m1 9.64618
m1 43.2969
m1 60.7396
m1 48.3495
m1 35.8336
m1 32.7611
m1 24.1925
m1 26.8244
m1 17.9448
m1 29.7936
m1 23.1585
m1 15.1243
m1 8.89132
m1 14.6676
m1 18.1515
m1 27.5357
m1 5.6661
m1 19.0589
FFT サイズは 4096 で、ピークは 79.119 です。
私は結果が1つの数値に近いことを望んでいました(1.0など)
そして、単純な乗算(ボリュームなど)をマグニチュードに適用すると、サウンドは奇妙なフィルターのように変更されます...
re/im から大きさ/位相に変換するために使用する関数は次のとおりです。
double SuperFFT::_GetPhase(double real, double imaginary)
{
return atan2(imaginary, real);
}
double SuperFFT::_GetMagnitude(double real, double imaginary)
{
return sqrt((real * real) + (imaginary * imaginary));
}
フェーズは良さそうです (-PI と PI の間に留まります)
240hz (期間 75368 サンプル) で単純な正弦波を渡すと、これらの大きさになります。
m1 0.262643
m1 0.369384
m1 0.543982
m1 0.851133
m1 1.44518
m1 2.76168
m1 6.37861
m1 21.2081
m1 239.998
m1 775.211
m1 585.819
m1 63.0807
m1 12.06
m1 4.37815
m1 2.07803
m1 1.14897
m1 0.701917
m1 0.460003
m1 0.317885
m1 0.228747
これは持続時間で割り、100 を掛けると 1 に近くなります。これは正常ですか?
マグニチュードを乗算すると音が途切れるのはなぜですか? FFT が壊れているか、何か不足していますか?
助けてくれてありがとう
編集:もちろんOLAを使用します
ジェフ