パラメータ設定
リセット
雑音は決定論的 LCG により生成されるため、同じシードなら毎回同じ波形が得られます。
受信信号・フィルタ係数・出力波形
上段=受信信号 r[n] = s[n] + n[n](青)/中段=フィルタ係数 h[n] = s[L−1−n](緑)/下段=出力 y[n](赤、黄点=ピーク)
理論・主要公式
受信信号 r[n] = s[n] + n[n] を、既知信号の時間反転 h[n] = s[L−1−n] で畳み込むと、信号到来位置で出力が最大になります。これがマッチドフィルタです。
フィルタ出力。* は畳み込み演算:
$$y[n] = \sum_{k=0}^{L-1} h[k]\,r[n-k] = (h * r)[n]$$
入力 SNR と出力ピーク SNR。E_s = A²·L は信号エネルギー:
$$\mathrm{SNR}_\mathrm{in} = \frac{A^2}{\sigma^2}, \qquad \mathrm{SNR}_\mathrm{out} = \frac{E_s}{\sigma^2} = \frac{A^2 L}{\sigma^2}$$
マッチドフィルタの処理ゲイン(パルス長そのもの):
$$G = \frac{\mathrm{SNR}_\mathrm{out}}{\mathrm{SNR}_\mathrm{in}} = L$$
パルスが長いほどゲインは大きくなり、低い入力 SNR でも検出が可能になります。これがレーダーのパルス圧縮や通信の整合受信の基本原理です。
マッチドフィルタ シミュレーターとは
🙋
レーダーの本に「マッチドフィルタ」って言葉がよく出てくるんですけど、雑音だらけの中から信号を「掘り出す」みたいな話で合ってますか?
🎓
ほぼ正解。ざっくり言うと「探したい波形の形をあらかじめ知ってるなら、それを物差しにして受信信号と相関を取れば、雑音中でも一番強く反応する点が見つかる」って話だ。式で書くと、フィルタ係数を $h[n]=s[L-1-n]$(つまり既知信号の時間反転)にして、受信信号 $r[n]$ と畳み込むと、信号到来時刻で出力が最大になる。上のシミュレーターで「受信信号」と「出力 y[n]」を見比べてみて。受信のままだと矩形パルスがどこにあるか分からないけど、出力では赤線が中央付近でピンと跳ね上がるだろう。
🙋
本当だ、すごい。でもこれ、SNR がもっと悪い(雑音が大きい)状況でも効くんですか?
🎓
そこがマッチドフィルタの真骨頂だよ。ノイズ標準偏差 σ を 3 とか 4 に上げてみて。受信信号は完全に雑音に埋もれて、もう何も見えない。でも出力にはまだピークがちゃんと立っている。それは出力 SNR が入力の L 倍(パルス長倍)に改善されるからだ。デフォルトの L=20 なら 13 dB の改善。100 サンプルなら 20 dB だよ。
🙋
「パルス長を伸ばすほどゲインが上がる」って聞いたんですけど、じゃあ無限に長くすれば検出できる?
🎓
理論上はそうだけど、実機では話が違ってくる。パルスを長くすると距離分解能が悪くなるんだ(レーダーなら「どこにあるか」がぼやける)。そこで実機ではチャープ信号(LFM)を使って「長くて分解能も高い」を両立させる。これがいわゆる「パルス圧縮」だよ。シミュレーターは矩形パルスだけど、原理は完全に同じ——既知波形と相関を取ればパルス長分のゲインが出る、ってこと。
🙋
「乱数シード」のスライダーを動かすと、ピーク値が少しずつ変わりますね。理論値の 20 ぴったりにはならない…
🎓
いいところに気づいた。理論ピーク値 $E_s = A^2 L$ は「信号だけ」を考えた値で、実際にはピーク位置にも雑音成分が乗るんだ。その雑音成分の標準偏差は $\sigma\sqrt{L}\cdot A$ 程度。L=20, A=1, σ=1 なら ±4.5 くらいばらつく。だから観測されるピークは 20 を中心に 15〜25 くらいで揺れる。シードを変えると違う雑音実現が見えるから、検出統計の「ばらつき」を体感できるよ。
よくある質問
マッチドフィルタは白色雑音以外でも最適ですか?
いいえ。$h[n] = s[L-1-n]$ という単純な形が最適なのは雑音が白色(平坦スペクトル)のときだけです。有色雑音(特定周波数に強いノイズ)に対しては、雑音スペクトル $S_n(f)$ で受信信号を白色化してから整合させる「白色化マッチドフィルタ」が最適です。実機では、雑音スペクトルを事前推定して逆フィルタを掛けるか、雑音の少ない周波数帯に重みを置く設計を行います。
相関と畳み込みの違いは何ですか?
相関 $R_{sr}[\tau] = \sum_n s[n]\,r[n+\tau]$ と畳み込み $y[\tau] = \sum_n h[n]\,r[\tau-n]$ は、$h[n] = s[L-1-n]$ と置けば数学的に等価です。教科書では「相関器」と呼ぶことが多いですが、実装上はフィルタ係数を反転して畳み込むのが一般的です。シミュレーターでもこの形でフィルタ係数を構築しています。物理的には「既知波形と受信信号の重なり具合を全シフトで計算している」と理解できます。
通信のシンボル検出にも使われますか?
はい。デジタル通信では送信シンボル波形(RRC ルートレイズドコサイン等)に整合した受信フィルタが必ず使われます。送信側ルートRRC × 受信側ルートRRC = レイズドコサイン全体で ISI(シンボル間干渉)がゼロになる「ナイキスト条件」を満たし、同時にシンボルあたりの SNR が最大化されます。AWGN 通信路ではこれが BER 最小の最適受信です。
処理ゲインを上げる代わりに失うものはありますか?
主に二つあります。1つは時間分解能:パルスを長くするとゲインは増えますが、出力ピークの幅も広がり、近接する目標が分離しにくくなります。レーダーではパルス圧縮(LFM・位相符号)で「長くて尖った」出力を両立させます。2つ目は適応性:マッチドフィルタは既知信号 $s[n]$ に完全に整合した形で固定なので、信号波形が想定からズレるとゲインが急激に落ちます。実機ではドップラーシフトや符号誤差に対するロバスト性も含めて設計します。
実世界での応用
レーダーのパルス圧縮: マッチドフィルタの最大の活躍の場はレーダーです。送信パルスに LFM(リニア周波数変調、チャープ)や位相符号(バーカー符号)を入れ、受信側でその波形と相関を取ることで、長いパルスのエネルギー(≒検出距離)と短いパルスの分解能を同時に手に入れます。気象レーダー、航空管制、防衛、衛星 SAR まで、ほぼ全ての近代レーダーがこの原理で動いています。
デジタル通信の整合受信: 4G/5G の OFDM、衛星通信、Wi-Fi、Bluetooth まで、送信シンボル波形に整合した受信フィルタが必ず入っています。AWGN(加法的白色ガウス雑音)通信路で BER(ビット誤り率)を最小化する最適受信器そのもので、シャノン限界に最も近い実装です。受信側のチェーンでベースバンド復調と組になって動きます。
ソナーと地震探査: 潜水艦のアクティブソナーや海底地形マッピングのマルチビーム測深、地震波の屈折法探査でも、既知の送信波形と相関を取る方式が標準です。海中・地中という SNR の悪い環境で長距離・高分解能を両立するため、パルス圧縮なしには成り立ちません。地球物理探査ではバイブロサイス(振動車両)の連続スイープ波形に対する相関処理が定番です。
重力波検出(LIGO): 2015年の重力波直接検出 GW150914 でも、ブラックホール連星合体の波形テンプレートライブラリと観測データの相関(マッチドフィルタリング)で信号を抽出しました。数百万のテンプレートに対して並列にマッチドフィルタを実行し、最大相関値が得られたものを「検出」とします。雑音に埋もれた極微弱信号を掘り出す、まさにこの原理の極致と言える応用です。
よくある誤解と注意点
最も多い誤解は、「マッチドフィルタを通すと信号自体が増幅される」と考えてしまう ことです。実際には信号エネルギーが時間軸上で「圧縮」されてピークに集中するだけで、絶対的なエネルギー量が増えるわけではありません。$E_s = A^2 L$ のエネルギーが、フィルタ出力では幅 1 サンプル程度のピーク値 $A^2 L$ として現れるだけです。シミュレーターでパルス長 L を変えてみると、出力ピーク値が L に比例して伸びることが確認できます。「信号は時間方向に集中、雑音は集中しない」これが SNR 改善の本質です。
次に多いのが、「パルス長を2倍にすればゲインも2倍(SNR 3 dB 改善)」と思い込む ことです。確かにマッチドフィルタ単体ではゲイン G = L なので2倍で +3 dB ですが、現実のレーダーや通信では「同じ平均電力の制約」がつくため話は変わります。平均電力一定で長くするとピーク振幅 A が下がり、$E_s = A^2 L$ は単純に L 倍にはなりません。シミュレーターは振幅 A とパルス長 L を独立に動かせるので、両者の役割を分離して理解するのに使えます。
最後に、「ピーク値が理論値ピッタリになるはず」という期待 に注意してください。理論ピーク $E_s = A^2 L$ は雑音項を無視した値で、実際の出力ピーク位置には雑音由来の項 $\sum h[k] n[\text{peak}-k]$ が加算されます。この項は平均ゼロ・標準偏差 $\sigma\sqrt{L}\cdot A$ 程度。デフォルト(A=1, L=20, σ=1)では理論値 20 に対して標準偏差 4.5 程度のばらつきが乗ります。シミュレーターで「乱数シード」を変えながらピーク値を眺めると、検出統計が確率変数であることを体感できます。実機の検出閾値設計では、この雑音ばらつきを考慮した「誤警報確率」「検出確率」が決定的に重要になります。