相関関数のスケーリング ― 2006年04月07日 22:25

相関関数の定義をみると、積分値 (あるいは積和値) を対象データの長さ (あるいは数) で割ったもののようです。
しかし
http://cessna373.asablo.jp/blog/2006/04/05/317192
の絵を見ても分かるように、有限長のデータの相関関数を取ると、ずれが大きくなるにしたがって重なっている部分が小さくなります。
そのため相関関数の値は、ずれの量に反比例して小さくなります。
これを避けるために、RH1 FFT では対象データの数ではなく重なっている部分の数で割ることによって、スケールを正規化しています。
それはそれでいいのですが、重なっている部分の数が少なくなればなるほど (ずれの大きいところほど) 精度が悪くなることに注意が必要です。
例えばサンプル数が N 個の場合、ずれが 0 のときの値は N 個の積和の平均値であるのに対して、ずれが N-1 のときの値は単に最初と最後のデータを掛け合わせたものになります。
相関関数としての意味を持つのは、ずれが比較的少ない部分に限られるということです。
さて上の絵は、
http://cessna373.asablo.jp/blog/2006/04/04/315953
で紹介しているサイトの whitenoise.wav の自己相関関数を上述のように計算したものです。
理想的なホワイトノイズの自己相関関数は、ずれが 0 のときのみ正の値を持ち、それ以外は 0 になります。
上の絵を見ると左の方 (ずれが小さい) は概ねそのようになっていますが、右の方 (ずれが大きい) ではかなり乱れていることが分かります。
解釈の仕方にもよりますが、相関関数として意味があるのは全体の半分程度までと考えておけばいいでしょう。
しかし
http://cessna373.asablo.jp/blog/2006/04/05/317192
の絵を見ても分かるように、有限長のデータの相関関数を取ると、ずれが大きくなるにしたがって重なっている部分が小さくなります。
そのため相関関数の値は、ずれの量に反比例して小さくなります。
これを避けるために、RH1 FFT では対象データの数ではなく重なっている部分の数で割ることによって、スケールを正規化しています。
それはそれでいいのですが、重なっている部分の数が少なくなればなるほど (ずれの大きいところほど) 精度が悪くなることに注意が必要です。
例えばサンプル数が N 個の場合、ずれが 0 のときの値は N 個の積和の平均値であるのに対して、ずれが N-1 のときの値は単に最初と最後のデータを掛け合わせたものになります。
相関関数としての意味を持つのは、ずれが比較的少ない部分に限られるということです。
さて上の絵は、
http://cessna373.asablo.jp/blog/2006/04/04/315953
で紹介しているサイトの whitenoise.wav の自己相関関数を上述のように計算したものです。
理想的なホワイトノイズの自己相関関数は、ずれが 0 のときのみ正の値を持ち、それ以外は 0 になります。
上の絵を見ると左の方 (ずれが小さい) は概ねそのようになっていますが、右の方 (ずれが大きい) ではかなり乱れていることが分かります。
解釈の仕方にもよりますが、相関関数として意味があるのは全体の半分程度までと考えておけばいいでしょう。
最近のコメント