自己相関によるノイズに強い時間計測
擬似ランダムコードには、nがゼロでない限り、ずれnの自己相関がほとんど0、という条件がありました。
そんな擬似ランダムコードが、GPS衛星から端末に送られてきたとしましょう。
擬似ランダムコード自体は端末も持っています。
「両者の積和演算」を実行してみましょう。
送られてきた信号列と、端末が持っている信号列。
元々は同じ擬似ランダムコードです。
だから仮に伝達時間が0ならば、積はすべて「+1」となり、和は1023となります。
しかし現実の伝達時間は0ではありません。
もし1/1023ミリ秒のちょうど3倍だけずれがあったとすると、この積和演算は「ずれ3の自己相関」を求めたことになります。
擬似ランダムコードの条件から、これはほとんど0です。
逆に、「両者の積和演算」を実行する際、端末が持っている信号列の方を1/1023ミリ秒のちょうど3倍だけ遅らせて実行したとしましょう。
この場合こそが、最初の擬似ランダムコードの「ずれ0の自己相関」を求めたことになります。
そう、1023です。
つまり、端末が持っている信号列の方をどれだけ送らせて入力と積和演算をとることで、値が大きくなるか。
それがすなわち、伝達時間なのです。
仮に伝達信号(1023ビット)のうち100ビットが、ノイズで反転してしまったとしましょう。
それでもちょうど伝達時間だけずらせたものとの間の積和演算の結果は、823になります。
逆にそうでないずらせ方をしたものとの間の積和演算の結果は、せいぜい200です。
どれだけずらすのが最適かというその値は、多少のノイズなんぞ、ものともしないのです。
なお、詳しい説明は省きますが、伝達時間が1/1023ミリ秒のちょうど整数倍でない場合でも、積和演算の結果から、その小数点部分まである程度求めることが可能です。

