07/11/02 01:10:35
↑からさらに自分で考えてみた。
>>244 log(sum(sqrt(re*re+im*im)))
の方式で仮に1バンド=1octで出力することを考える。
1個上のバンドに行くに従って加算するデータ数が2倍になっていくわけだから、
結果は+6dB/octの右上がりになるはず。
問題は、ホワイトノイズを入れると+3dB/octの右上がりになってほしい。
sqrtとsumの順番を入れ替えると(sqrtを消して20→10でも等価)、
数が2倍になると3dB上がるので+3dB/octになる。
つまり、20*log10(sqrt(sum(re*re+im*im)))
最初に書いた、絶対値の2乗で足して平方根をとる、でいいみたい。
ピンクノイズの各バンドの平均値は1バンド上がると-3dBずつ下がっていくはず
つまり1/√2に減っていくはずで、これの2乗の次元(1/2ずつ減ってく)で
数が2倍になっていくものを合計していくと皆同じになるという理屈。
ちなみに、素直に(?)、ホワイトで水平、ピンクで右下がりにするには、
sumのところを平均にすればいいはず。
(1バンド上がるごとに2倍になる個数で割ったやつをsqrtするので、1バンド上がると
1/√2つまり-3dBさがっていく)
root mean squareってやつですね。
あ~すっきりした。