モノパルス追尾レーダーの角度誤差検出原理と実装

ミサイル防衛用のレーダーが高速で接近する目標を追い続けるとき、あるいは衛星追尾アンテナが空のかなたを飛ぶ衛星に正確にビームを向け続けるとき、レーダーは「目標が今どの方向にいるか」をミリ秒単位で更新し続けなければなりません。アンテナのビームをわずかに左右に振って、反射が一番強くなる方向を探す、という素朴な方法を思いつくかもしれません。実際、初期の追尾レーダーはビームを円錐状に回転させて目標を探す「コニカルスキャン」という方式を使っていました。しかしこの方式には致命的な弱点があります。ビームを振っている間に目標の反射強度(レーダー断面積)が変動すると、それが角度のずれなのか、目標自体の明滅なのか区別がつかなくなるのです。航空機がわずかに姿勢を変えるだけで反射強度は数十 dB も変わりますから、これは深刻な問題でした。

モノパルス(monopulse) 方式は、この問題を「たった 1 つのパルス」で角度を測ることによって解決します。ビームを時間的に振る代わりに、わずかに方向の異なる複数のビームを同時に作り、それらの受信信号を「和」と「差」に組み合わせます。和信号と差信号の比を取ると、目標の反射強度には依存せず、目標がビーム中心からどれだけずれているかという「角度誤差」だけが純粋に取り出せます。1 つのパルスから角度が決まるので「モノ(単一)パルス」と呼ばれるのです。

モノパルスの原理を理解すると、以下のような分野への見通しが一気に開けます。

  • 追尾レーダー・火器管制: 高速目標を高精度に追い続ける軍用・民生レーダーの中核技術であり、角度精度がビーム幅の数十分の一に達します
  • 衛星通信・宇宙機追尾: 地上局の大型パラボラアンテナが静止衛星や深宇宙探査機を自動追尾する際、モノパルスフィードで指向誤差を検出します
  • 電子走査アレイ(フェーズドアレイ): デジタルビームフォーミングと組み合わせ、和ビーム・差ビームをソフトウェアで合成して高速ターゲット更新を行います
  • レーダー高度計・着陸誘導: 航空機の精密進入用 ILS や電波高度計でも差信号による角度検出が応用されています

本記事の内容

  • モノパルス方式が「単一パルス」で角度を測れる理由の直感的理解
  • 2 つのオフセットビームから和信号 $\Sigma$ と差信号 $\Delta$ を定義する
  • アレイ因子からモノパルス比 $\Delta/\Sigma$ が小角度で角度誤差に比例することの導出
  • 振幅比較モノパルスと位相比較モノパルスの違い
  • 4 象限フィードによる方位・仰角の同時測角
  • 雑音による角度推定の分散とビーム幅・SNR の関係
  • Python 実装: 指向性合成、和差パターン、モノパルス誤差曲線、雑音下での RMS 角度誤差

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

モノパルスとは — なぜ1パルスで角度がわかるのか

モノパルスの核心を理解するために、まず日常的なアナロジーから始めましょう。私たちが音のする方向を耳で当てられるのはなぜでしょうか。左右の耳に届く音の「大きさの差」と「タイミングの差」を脳が無意識に比較しているからです。右から音が来れば右耳のほうがわずかに大きく、わずかに早く聞こえます。片耳だけでは音量が大きいのか音源が近いのか区別できませんが、両耳の信号を比較すれば方向だけを抽出できるのです。

モノパルスレーダーはまさにこの「両耳」の原理を電波で実現したものです。少しずつ異なる方向を向いた 2 つのビーム(アンテナの 2 つの部分)で同じ目標を同時に受信し、その 2 つの受信信号を比較します。重要なのは、比較に「比」を使う点です。たとえば右ビームの受信振幅が $A$、左ビームが $B$ だとして、$A – B$ という差だけを見ると、目標が明るく(反射が強く)なれば $A$ も $B$ も一緒に大きくなるので、差も大きくなってしまいます。これでは角度のずれと反射強度の変動を区別できません。

そこで差 $\Delta = A – B$ を和 $\Sigma = A + B$ で割った量 $\Delta/\Sigma = (A-B)/(A+B)$ を考えます。目標の反射が 2 倍になれば $A$ も $B$ も 2 倍になりますが、比 $\Delta/\Sigma$ は分子分母が同じ倍率でスケールするため変化しません。つまり $\Delta/\Sigma$ は目標の明るさに依存せず、目標が中心からどちらにどれだけずれているかという「角度情報だけ」を取り出した量なのです。これがコニカルスキャンに対するモノパルスの決定的な優位性です。コニカルスキャンが角度情報を得るために時間をかけてビームを振り、その間の反射変動に汚染されたのに対し、モノパルスは 1 つの瞬間(1 パルス)で和と差を同時に取得するため、振幅変動の影響を受けません。

ここまでで、モノパルスが「和と差の比」によって角度を取り出すというアイデアを把握しました。では、この和信号と差信号は実際にどのようなアンテナパターンを持ち、なぜ $\Delta/\Sigma$ が角度に比例するのでしょうか。次のセクションで、2 つのオフセットビームから和差信号を厳密に定義し、アレイ因子を使ってその性質を導出していきます。

和ビームと差ビームの定義

オフセットした2つのビーム

モノパルスを実現する最もシンプルな構成は、アンテナの開口を 2 つに分け、それぞれがわずかに異なる方向を向いた 2 つのビームを作ることです。1 つは少し上(あるいは右)を向いたビーム、もう 1 つは少し下(あるいは左)を向いたビームです。これらをそれぞれ $A$ ビーム、$B$ ビームと呼びましょう。

それぞれのビームの電圧利得パターン(複素振幅の角度依存性)を、目標の角度 $\theta$ の関数として $f_A(\theta)$, $f_B(\theta)$ と書きます。2 つのビームは互いに角度 $\theta_s$(スクイント角、squint angle)だけ反対方向にずれているとします。単一ビームの利得パターンを $f(\theta)$ とすると、

$$ f_A(\theta) = f(\theta – \theta_s), \quad f_B(\theta) = f(\theta + \theta_s) $$

と書けます。$A$ ビームは $+\theta_s$ 方向に向けられているので、目標が $\theta = +\theta_s$ にあるときに最大感度を持ち、$B$ ビームは $\theta = -\theta_s$ にあるときに最大になります。

和信号と差信号

これら 2 つのビームの受信信号を、合成回路(古典的にはマジック T やラットレース・カプラと呼ばれるマイクロ波回路)で和と差に組み合わせます。和パターン $\Sigma(\theta)$ と 差パターン $\Delta(\theta)$ を次のように定義します。

$$ \Sigma(\theta) = f_A(\theta) + f_B(\theta) = f(\theta – \theta_s) + f(\theta + \theta_s) $$

$$ \Delta(\theta) = f_A(\theta) – f_B(\theta) = f(\theta – \theta_s) – f(\theta + \theta_s) $$

和パターン $\Sigma(\theta)$ は 2 つのビームを足し合わせたものなので、ボアサイト($\theta = 0$、アンテナの正面方向)で最大となる、通常のアンテナビームに近い形になります。これは目標を探知し、距離や速度を測るための主ビームとして使われます。

一方、差パターン $\Delta(\theta)$ は 2 つのビームの引き算なので、$\theta = 0$ で $\Delta(0) = f(-\theta_s) – f(+\theta_s) = 0$ となり、ボアサイトでヌル(ゼロ点)を持ちます。目標がちょうど正面にあれば $A$ ビームと $B$ ビームの受信が等しくなり、差がゼロになるからです。目標が中心からずれると、ずれた側のビームの受信が大きくなり、$\Delta$ がそのずれに応じた値を持ちます。さらに、ずれる向き(上か下か、右か左か)によって $\Delta$ の符号が反転します。$\Delta$ の大きさがずれの量、$\Delta$ の符号がずれの向きを教えてくれるのです。

モノパルス比

角度情報を反射強度から切り離すために、差信号を和信号で割った モノパルス比(monopulse ratio)を定義します。

$$ m(\theta) = \frac{\Delta(\theta)}{\Sigma(\theta)} = \frac{f(\theta – \theta_s) – f(\theta + \theta_s)}{f(\theta – \theta_s) + f(\theta + \theta_s)} $$

この $m(\theta)$ は、目標の反射係数や距離による振幅変動が分子分母で約分されて消えるため、純粋に角度 $\theta$ のみの関数になります。実際の受信信号でいえば、$A$ ビームの受信複素電圧を $V_A$、$B$ ビームを $V_B$ として、

$$ m = \frac{V_A – V_B}{V_A + V_B} $$

を計算すれば、目標の RCS(レーダー断面積)や距離が未知でも角度が決まります。これがモノパルスの威力です。

ここまでで和・差・モノパルス比を定義しました。しかし、なぜモノパルス比が「角度に比例」し、それを使えば角度が測れると言えるのでしょうか。それを納得するには、$m(\theta)$ が小さな角度ずれに対して直線的に振る舞うことを数式で確認する必要があります。次のセクションでアレイ因子から $m(\theta)$ を具体的に求め、テイラー展開によってその線形性を導きます。

アレイ因子からモノパルス比を導出する

位相比較型モノパルスのアレイモデル

まず最もクリーンに導出できる 位相比較型(phase-comparison)モノパルス から考えます。これは、間隔 $d$ だけ離れた 2 つの同一アンテナ素子(あるいは 2 つのサブアレイ)を使う構成です。2 つの素子は同じ方向を向いていますが、空間的に離れているため、斜めから来る平面波に対して受信位相に差が生じます。

素子間隔を $d$、波長を $\lambda$、波数を $k = 2\pi/\lambda$ とします。目標がボアサイトから角度 $\theta$ の方向にあるとき、2 つの素子に入射する平面波の行路差は $d\sin\theta$ です。これを位相に直すと、素子間の受信位相差は

$$ \psi = k d \sin\theta = \frac{2\pi d}{\lambda}\sin\theta $$

となります。素子 1($A$)と素子 2($B$)の受信複素電圧を、共通の振幅 $V_0$(目標の反射強度・距離を含む)を使って書くと、原点を 2 素子の中点に取れば、

$$ V_A = V_0\, e^{+j\psi/2}, \quad V_B = V_0\, e^{-j\psi/2} $$

と表せます。素子 1 が $+d/2$、素子 2 が $-d/2$ の位置にあるとして、それぞれの行路差から来る位相を割り当てました。

和・差信号と比

和信号と差信号を計算します。共通振幅 $V_0$ をくくり出すと、

$$ \Sigma = V_A + V_B = V_0\left(e^{+j\psi/2} + e^{-j\psi/2}\right) = 2V_0\cos\left(\frac{\psi}{2}\right) $$

ここでオイラーの公式 $e^{jx} + e^{-jx} = 2\cos x$ を使いました。同様に差信号は、$e^{jx} – e^{-jx} = 2j\sin x$ を使って、

$$ \Delta = V_A – V_B = V_0\left(e^{+j\psi/2} – e^{-j\psi/2}\right) = 2jV_0\sin\left(\frac{\psi}{2}\right) $$

となります。モノパルス比を計算すると、$2V_0$ が分子分母で約分されて、

$$ m = \frac{\Delta}{\Sigma} = \frac{2jV_0\sin(\psi/2)}{2V_0\cos(\psi/2)} = j\tan\left(\frac{\psi}{2}\right) $$

が得られます。ここで重要な点が 2 つあります。第 1 に、目標の反射強度や距離を含む共通振幅 $V_0$ が完全に消えました。モノパルス比は角度(を通じた位相差 $\psi$)だけの関数です。第 2 に、$m$ は純虚数になっています。位相比較型では、和信号を基準にした差信号の 虚部(直交成分)が角度情報を持つのです。実際の受信機では、$\Sigma$ を基準位相としてコヒーレント検波し、$\mathrm{Im}(\Delta/\Sigma)$ を取り出します。

小角度での線形化

角度誤差を測る場面では、目標はビーム中心の近く($\theta \approx 0$、したがって $\psi \approx 0$)にいます。$\psi$ が小さいとき $\tan(\psi/2) \approx \psi/2$ と近似できるので、

$$ \mathrm{Im}(m) = \tan\left(\frac{\psi}{2}\right) \approx \frac{\psi}{2} = \frac{\pi d}{\lambda}\sin\theta $$

さらに $\theta$ が小さければ $\sin\theta \approx \theta$ なので、

$$ \boxed{\;\mathrm{Im}\!\left(\frac{\Delta}{\Sigma}\right) \approx \frac{\pi d}{\lambda}\,\theta\;} $$

すなわち、モノパルス比の虚部は角度誤差 $\theta$ に比例します。比例係数 $k_m = \pi d/\lambda$ は モノパルス勾配(monopulse slope)と呼ばれ、素子間隔 $d$ を波長に対して大きくとるほど勾配が急になり、角度感度が高くなります。受信機はこの線形関係を逆に使い、測定した $\mathrm{Im}(\Delta/\Sigma)$ を $k_m$ で割って角度誤差 $\hat\theta = \mathrm{Im}(\Delta/\Sigma)/k_m$ を推定するのです。1 パルスの和・差測定から、目標の角度誤差が直接読み取れることが数式で確認できました。

振幅比較型の場合

一方、振幅比較型モノパルスでは、前節で定義したスクイントした 2 つのビーム $f(\theta \pm \theta_s)$ を使います。これは典型的にはパラボラアンテナの焦点に複数のフィードを置く構成です。ビームパターン $f(\theta)$ をボアサイト近傍でテイラー展開すると、$f(\theta)$ は $\theta = 0$ で極大なので 1 次の項が消え、

$$ f(\theta \pm \theta_s) \approx f(\theta_0) \pm \theta_0\, f'(\theta_s\text{近傍の傾き}) + \cdots $$

という形になりますが、ここは丁寧に扱う必要があります。目標角度を $\theta$、各ビームの中心を $\pm\theta_s$ として、$f(\theta – \theta_s)$ と $f(\theta + \theta_s)$ を $\theta = 0$ のまわりで $\theta$ について 1 次展開します。$f$ が偶関数($\theta=0$ で対称)であることを使うと、

$$ \Sigma(\theta) = f(\theta-\theta_s) + f(\theta+\theta_s) \approx 2f(\theta_s) $$

$$ \Delta(\theta) = f(\theta-\theta_s) – f(\theta+\theta_s) \approx -2\theta\, f'(\theta_s) $$

ここで $f(\theta-\theta_s)$ を $\theta$ で展開した 1 次係数は $f'(-\theta_s)\cdot(+1)=f'(-\theta_s)$、$f(\theta+\theta_s)$ の 1 次係数は $f'(\theta_s)$ で、偶関数の微分は奇関数なので $f'(-\theta_s)=-f'(\theta_s)$ を使いました。したがってモノパルス比は、

$$ m(\theta) = \frac{\Delta}{\Sigma} \approx \frac{-2\theta f'(\theta_s)}{2f(\theta_s)} = -\frac{f'(\theta_s)}{f(\theta_s)}\,\theta $$

となり、振幅比較型でもモノパルス比が角度に比例することがわかります。モノパルス勾配は $k_m = -f'(\theta_s)/f(\theta_s)$ で、これはビームを互いにずらしたスクイント角 $\theta_s$ におけるパターンの対数微分です。スクイント角を適切に選ぶと(典型的にはビームのクロスオーバーが半値付近になるように)、勾配が最大化され、感度の高い測角ができます。

ここまでで、位相比較型・振幅比較型の両方で「モノパルス比 ∝ 角度誤差」という線形関係を導きました。両者は数学的に似ていますが、ハードウェア構成と特性に違いがあります。次のセクションで、両方式の違いを整理しておきましょう。

振幅比較型と位相比較型の違い

2つの方式の物理的な違い

振幅比較型と位相比較型は、どちらも和・差・比という同じ枠組みを使いますが、「何の差から角度を読むか」が異なります。

振幅比較型(amplitude-comparison) は、向きの異なる 2 つのビームの 受信振幅の違い から角度を読みます。目標が $A$ ビーム側にずれていれば $A$ ビームの受信が大きく、$B$ ビームが小さくなります。この振幅差が角度に対応します。パラボラアンテナの焦点付近に 4 つのフィードホーンを置く構成が典型で、機械式追尾レーダーや衛星通信地上局で広く使われてきました。1 つの開口を共有しつつ複数のずれたビームを作るため、アンテナがコンパクトにまとまる利点があります。

位相比較型(phase-comparison) は、空間的に離れた 2 つの同一ビームの 受信位相の違い から角度を読みます。2 つの素子は同じ方向を向いているので振幅はほぼ等しく、行路差による位相差だけが角度情報を担います。干渉計(インターフェロメータ)と同じ原理で、素子間隔 $d$ が大きいほど高分解能になりますが、$d$ が大きすぎると位相が $2\pi$ を超えて折り返し、角度の曖昧性(グレーティングローブ的な多義性)が生じます。

比較表

項目 振幅比較型 位相比較型
角度情報の担い手 2 ビームの受信振幅差 2 素子の受信位相差
ビームの向き 互いにスクイント(傾く) 同一方向(平行)
モノパルス勾配 $-f'(\theta_s)/f(\theta_s)$ $\pi d/\lambda$
モノパルス比の主成分 実部(同相成分) 虚部(直交成分)
典型的構成 パラボラ+4 フィード 離間した 2 サブアレイ
角度曖昧性 生じにくい $d/\lambda$ 大で生じる
主な用途 火器管制、衛星追尾 干渉計、測位、DF

実際のレーダーでは、両方式の長所を組み合わせた構成や、フェーズドアレイで開口を分割して和・差ビームをデジタル合成する方式も使われます。デジタルビームフォーミングでは、各素子の複素受信信号をすべて記録しておき、ソフトウェアで重み付け加算することで $\Sigma$ と $\Delta$ を任意に合成できるため、柔軟性が非常に高くなっています。

方位と仰角の同時測角 — 4象限フィード

実用の追尾レーダーは 2 次元(方位角と仰角)で目標を追う必要があります。これを実現するのが 4 象限モノパルス です。アンテナ開口を上下左右に 4 つの象限($A$: 左上、$B$: 右上、$C$: 左下、$D$: 右下)に分割し、それぞれの受信信号を組み合わせて 3 つのチャンネルを作ります。

$$ \Sigma = A + B + C + D $$

方位(アジマス)方向の差信号は、左右の和の差として、

$$ \Delta_{\mathrm{az}} = (A + C) – (B + D) $$

仰角(エレベーション)方向の差信号は、上下の和の差として、

$$ \Delta_{\mathrm{el}} = (A + B) – (C + D) $$

を作ります。和チャンネル $\Sigma$ は探知と距離・速度測定に使い、$\Delta_{\mathrm{az}}/\Sigma$ から方位角誤差を、$\Delta_{\mathrm{el}}/\Sigma$ から仰角誤差を同時に求めます。1 つのパルスで方位と仰角の両方の誤差が得られるため、2 次元の高速追尾が可能になります。

両方式の違いと 2 次元への拡張を理解したところで、次に実用上きわめて重要な「雑音があるときに角度はどれだけ正確に測れるのか」という問題を考えましょう。これがモノパルスの精度限界を決めます。

雑音による角度推定の分散

なぜ雑音が角度誤差を生むのか

これまでは雑音のない理想的な信号を扱ってきました。しかし現実の受信信号には熱雑音が必ず重畳します。和信号と差信号の両方に雑音が乗ると、モノパルス比 $\Delta/\Sigma$ がふらつき、推定した角度に誤差が生じます。目標が真にボアサイトにあって $\Delta = 0$ であっても、雑音のせいで $\Delta \neq 0$ となり、あたかも角度がずれているかのように見えてしまうのです。

このときの角度推定誤差の大きさを評価しましょう。和信号の電力に対する信号対雑音比を $\mathrm{SNR}$ とします。差チャンネルに乗る雑音電圧の標準偏差を $\sigma_n$、和信号の振幅を $|\Sigma|$ とすると、モノパルス比の揺らぎは概ね $\sigma_n / |\Sigma|$ 程度です。これをモノパルス勾配 $k_m$ で角度に換算すると、角度推定の標準偏差は

$$ \sigma_\theta \approx \frac{1}{k_m}\cdot\frac{\sigma_n}{|\Sigma|} = \frac{1}{k_m\sqrt{\mathrm{SNR}}} $$

となります。ここで $|\Sigma|/\sigma_n = \sqrt{\mathrm{SNR}}$(振幅 SNR は電力 SNR の平方根)を使いました。

ビーム幅との関係

モノパルス勾配 $k_m$ はアンテナのビーム幅 $\theta_B$ に反比例します。直感的には、ビームが鋭い($\theta_B$ が小さい)ほどパターンの傾きが急になり、わずかな角度ずれが大きな差信号を生むので、勾配が大きくなるからです。$k_m \propto 1/\theta_B$ と書けるので、比例定数を $k_m = k_\Sigma/\theta_B$($k_\Sigma$ はモノパルスパターンの形状で決まる無次元の定数、典型値は 1.2〜1.6 程度)と置くと、角度推定誤差は

$$ \boxed{\;\sigma_\theta \approx \frac{\theta_B}{k_\Sigma\sqrt{2\,\mathrm{SNR}}}\;} $$

という有名な関係式になります(係数の $\sqrt{2}$ は和・差両チャンネルの独立な雑音を考慮した厳密計算から現れます)。この式は追尾レーダーの設計で極めて重要です。読み取れることは 2 つあります。第 1 に、角度精度はビーム幅に比例します。鋭いビームほど高精度です。第 2 に、角度精度は SNR の平方根に反比例します。SNR を 4 倍にすれば誤差は半分になります。

特筆すべきは、$\sigma_\theta$ がビーム幅 $\theta_B$ の 数十分の一以下 になりうることです。たとえばビーム幅 $2^\circ$、SNR が 20 dB(100 倍)なら、$\sigma_\theta \approx 2^\circ/(1.4\times\sqrt{200}) \approx 0.1^\circ$ となり、ビーム幅の 20 分の 1 の精度で角度が測れます。「ビーム幅でしか角度は分からない」という素朴な予想を、モノパルスは SNR の力で大きく上回るのです。これがモノパルス追尾が高精度を実現する数学的な根拠です。

雑音下の精度限界を式で把握しました。しかし式だけでは実感がわきにくいので、ここからは Python でアンテナパターン、和差パターン、モノパルス誤差曲線、そして雑音下での角度推定精度を実際に計算し、これまでの理論を視覚的に確認していきましょう。

Python による和差パターンとモノパルス比の可視化

2素子アレイの和パターンと差パターン

まず、位相比較型の基本である 2 素子アレイについて、和パターン $\Sigma(\theta)$ と差パターン $\Delta(\theta)$ を計算して可視化します。素子間隔は半波長より少し広い $d = 0.7\lambda$ とし、各素子の素子パターンは無指向性(等方)と仮定します。

import numpy as np
import matplotlib.pyplot as plt

# パラメータ
lam = 1.0           # 波長(規格化)
d = 0.7 * lam       # 素子間隔
k = 2 * np.pi / lam # 波数

# 角度範囲 [rad]
theta = np.linspace(-np.pi/2, np.pi/2, 1001)

# 位相差 psi = k d sin(theta)
psi = k * d * np.sin(theta)

# 2素子(中点が原点)の受信: V_A = e^{+j psi/2}, V_B = e^{-j psi/2}
V_A = np.exp(+1j * psi / 2)
V_B = np.exp(-1j * psi / 2)

# 和・差パターン
Sigma = V_A + V_B          # = 2 cos(psi/2)
Delta = V_A - V_B          # = 2j sin(psi/2)

# 電力パターン [dB](正規化)
def to_db(p):
    mag = np.abs(p)
    mag = mag / mag.max() if mag.max() > 0 else mag
    return 20 * np.log10(np.clip(mag, 1e-4, None))

plt.figure(figsize=(9, 5.5))
plt.plot(np.degrees(theta), to_db(Sigma), label=r'Sum pattern $|\Sigma|$', lw=2)
plt.plot(np.degrees(theta), to_db(Delta), label=r'Difference pattern $|\Delta|$',
         lw=2, ls='--')
plt.axvline(0, color='gray', lw=0.8)
plt.ylim(-40, 2)
plt.xlabel('Angle θ [deg]')
plt.ylabel('Normalized power [dB]')
plt.title('Sum and Difference Beam Patterns (2-element, d=0.7λ)')
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('monopulse_sum_diff.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフから、モノパルスの核心的な性質が読み取れます。第 1 に、和パターン $\Sigma$ はボアサイト($\theta = 0$)で最大になっており、目標を探知する主ビームとして機能します。第 2 に、差パターン $\Delta$ はボアサイトで深いヌル(ゼロ点)を持ち、$-40$ dB 以下まで急激に落ち込んでいます。目標が正面にあれば差信号はゼロになるという理論通りの振る舞いです。第 3 に、ヌルの両側で $\Delta$ が立ち上がる傾きが急であることがわかります。この急な傾きこそがモノパルス勾配であり、わずかな角度ずれを大きな差信号に変換して高感度な測角を可能にします。

モノパルス誤差曲線

次に、モノパルス比 $\mathrm{Im}(\Delta/\Sigma)$ を角度の関数としてプロットし、理論的に導いた線形関係 $\mathrm{Im}(\Delta/\Sigma)\approx (\pi d/\lambda)\theta$ と比較します。これがモノパルスの「角度判別曲線(discriminant curve)」です。

import numpy as np
import matplotlib.pyplot as plt

lam = 1.0
d = 0.7 * lam
k = 2 * np.pi / lam

# ボアサイト近傍の角度範囲
theta = np.linspace(-np.radians(30), np.radians(30), 601)
psi = k * d * np.sin(theta)

V_A = np.exp(+1j * psi / 2)
V_B = np.exp(-1j * psi / 2)
Sigma = V_A + V_B
Delta = V_A - V_B

# モノパルス比の虚部(位相比較型では Im(Δ/Σ) が角度に対応)
m = np.imag(Delta / Sigma)   # = tan(psi/2)

# 線形近似(小角度): Im(Δ/Σ) ≈ (pi d / lam) * theta
slope = np.pi * d / lam
m_linear = slope * theta

plt.figure(figsize=(9, 5.5))
plt.plot(np.degrees(theta), m, label=r'Exact $\mathrm{Im}(\Delta/\Sigma)$', lw=2)
plt.plot(np.degrees(theta), m_linear, label='Linear approx. (small angle)',
         lw=2, ls='--')
plt.axhline(0, color='gray', lw=0.8)
plt.axvline(0, color='gray', lw=0.8)
plt.xlabel('Target angle θ [deg]')
plt.ylabel(r'Monopulse ratio  $\mathrm{Im}(\Delta/\Sigma)$')
plt.title('Monopulse Discriminant Curve')
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('monopulse_discriminant.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフから、モノパルス測角の本質が見えてきます。ボアサイト付近(おおよそ $\pm 10^\circ$ 以内)では厳密曲線と線形近似がほぼ重なっており、モノパルス比が角度に比例する線形領域が存在することが確認できます。この領域では、測定した $\mathrm{Im}(\Delta/\Sigma)$ を勾配 $\pi d/\lambda$ で割るだけで角度誤差が直接求まります。一方、角度が大きくなると曲線が湾曲し、やがて折り返します。これは線形領域を外れた領域で、追尾レーダーは目標を常にこの線形領域(ボアサイト近傍)に保つようにアンテナ(またはビーム)を制御し続けることで、高精度な測角を維持しています。曲線の符号が角度の符号(左右・上下)に対応している点も、誤差の向きが正しく検出できることを示しています。

角度推定の動作確認

次に、ある未知の角度に目標を置き、和・差信号からモノパルス比を計算して角度を推定するという、実際の追尾処理を模擬してみます。目標の反射強度(複素振幅)を変えても推定角度が変わらないことを確認し、モノパルスが振幅に依存しないことを実証します。

import numpy as np

lam = 1.0
d = 0.7 * lam
k = 2 * np.pi / lam
slope = np.pi * d / lam   # モノパルス勾配

def estimate_angle(theta_true, V0):
    """真の角度と複素反射振幅 V0 から角度を推定"""
    psi = k * d * np.sin(theta_true)
    # 受信信号(共通振幅 V0 を掛ける)
    V_A = V0 * np.exp(+1j * psi / 2)
    V_B = V0 * np.exp(-1j * psi / 2)
    Sigma = V_A + V_B
    Delta = V_A - V_B
    m = np.imag(Delta / Sigma)        # モノパルス比
    theta_hat = m / slope             # 角度に換算(小角度近似)
    return np.degrees(theta_hat)

theta_true = np.radians(3.0)  # 真の角度 3度
# 反射振幅をいろいろ変える(強度・位相とも)
for V0 in [1.0, 5.0, 0.2, 3.0*np.exp(1j*1.2)]:
    est = estimate_angle(theta_true, V0)
    print(f"V0={V0:>16}  ->  推定角度 = {est:.4f} deg")

この出力を見ると、反射振幅 $V_0$ を 0.2 倍から 5 倍まで、さらに複素位相を変えても、推定角度がすべて同じ値(真値 3 度に近い値)になることが確認できます。反射強度に依存せず角度だけが取り出せるという、本記事の冒頭で強調したモノパルスの最大の利点が数値的に裏付けられました。小角度近似のため真値 3 度からわずかにずれますが、線形領域内では十分な精度です。

振幅比較型のビームパターンと和差合成

続いて、振幅比較型モノパルスを扱います。ガウス形のビームパターンを 2 つ、スクイント角 $\pm\theta_s$ だけずらして配置し、その和・差から判別曲線を作ります。

import numpy as np
import matplotlib.pyplot as plt

# ガウスビーム(電圧パターン)
theta_B = np.radians(4.0)          # ビーム幅(半値全幅相当の目安)
sigma_b = theta_B / 2.355          # ガウスの標準偏差
theta_s = np.radians(2.0)          # スクイント角

def beam(theta, center):
    return np.exp(-(theta - center)**2 / (2 * sigma_b**2))

theta = np.linspace(np.radians(-12), np.radians(12), 801)
f_A = beam(theta, +theta_s)        # 上(右)向きビーム
f_B = beam(theta, -theta_s)        # 下(左)向きビーム

Sigma = f_A + f_B
Delta = f_A - f_B
m = Delta / Sigma                  # 振幅比較では実数比が角度に対応

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13, 5))

ax1.plot(np.degrees(theta), f_A, label=r'Beam A ($+\theta_s$)')
ax1.plot(np.degrees(theta), f_B, label=r'Beam B ($-\theta_s$)')
ax1.plot(np.degrees(theta), Sigma, 'k', lw=2, label=r'$\Sigma=A+B$')
ax1.plot(np.degrees(theta), Delta, 'r--', lw=2, label=r'$\Delta=A-B$')
ax1.set_xlabel('Angle θ [deg]'); ax1.set_ylabel('Voltage gain')
ax1.set_title('Amplitude-comparison: squinted beams')
ax1.legend(); ax1.grid(alpha=0.3)

ax2.plot(np.degrees(theta), m, lw=2)
ax2.axhline(0, color='gray', lw=0.8); ax2.axvline(0, color='gray', lw=0.8)
ax2.set_xlabel('Target angle θ [deg]')
ax2.set_ylabel(r'$\Delta/\Sigma$')
ax2.set_title('Discriminant curve (amplitude-comparison)')
ax2.grid(alpha=0.3)

plt.tight_layout()
plt.savefig('monopulse_amplitude.png', dpi=150, bbox_inches='tight')
plt.show()

左のグラフから、振幅比較型の構造がよくわかります。2 つのガウスビーム $A$, $B$ が互いに反対方向にスクイントしており、その和 $\Sigma$ はボアサイトで最大の単峰パターン差 $\Delta$ はボアサイトでゼロを通り符号が反転する奇関数になっています。右のグラフの判別曲線は、ボアサイト付近で直線的に立ち上がっており、ここでも $\Delta/\Sigma$ が角度に比例することが確認できます。位相比較型では虚部、振幅比較型では実部が角度を担うという違いはありますが、判別曲線の形は本質的に同じであることが見て取れます。

雑音下での角度推定 RMS 誤差

最後に、本記事のクライマックスである雑音下での角度推定精度を、モンテカルロシミュレーションで検証します。和・差チャンネルに複素ガウス雑音を加え、SNR を変えながら推定角度の RMS 誤差を測り、理論式 $\sigma_\theta \approx \theta_B/(k_\Sigma\sqrt{2\,\mathrm{SNR}})$ と比較します。

import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng(0)

lam = 1.0
d = 0.7 * lam
k = 2 * np.pi / lam
slope = np.pi * d / lam              # モノパルス勾配 [1/rad]
theta_true = np.radians(0.0)         # 目標はボアサイト

snr_db = np.arange(0, 41, 2)         # SNR [dB]
n_trials = 20000
rms_deg = []

for s_db in snr_db:
    snr = 10**(s_db / 10)
    psi = k * d * np.sin(theta_true)
    V_A0 = np.exp(+1j * psi / 2)
    V_B0 = np.exp(-1j * psi / 2)
    Sigma0 = V_A0 + V_B0             # 無雑音の和(振幅2)

    # 雑音電圧の標準偏差を SNR から決める(和の電力基準)
    sig_amp = np.abs(Sigma0)
    noise_std = sig_amp / np.sqrt(2 * snr)  # 各チャンネル実部/虚部あたり

    # 複素ガウス雑音を和・差に独立に付加
    nA = noise_std * (rng.standard_normal(n_trials) + 1j*rng.standard_normal(n_trials))
    nB = noise_std * (rng.standard_normal(n_trials) + 1j*rng.standard_normal(n_trials))
    VA = V_A0 + nA
    VB = V_B0 + nB
    Sigma = VA + VB
    Delta = VA - VB
    m = np.imag(Delta / Sigma)
    theta_hat = m / slope
    rms_deg.append(np.degrees(np.sqrt(np.mean(theta_hat**2))))

rms_deg = np.array(rms_deg)

# 理論曲線:sigma_theta ∝ 1/(slope * sqrt(SNR))
snr_lin = 10**(snr_db / 10)
theory = np.degrees(1.0 / (slope * np.sqrt(snr_lin)))

plt.figure(figsize=(9, 5.5))
plt.semilogy(snr_db, rms_deg, 'o-', label='Monte-Carlo RMS error')
plt.semilogy(snr_db, theory, 'r--', lw=2, label=r'Theory $\propto 1/\sqrt{\mathrm{SNR}}$')
plt.xlabel('SNR [dB]')
plt.ylabel('Angle RMS error [deg]')
plt.title('Monopulse Angle Estimation Accuracy vs SNR')
plt.legend(); plt.grid(alpha=0.3, which='both')
plt.tight_layout()
plt.savefig('monopulse_rms_error.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフは、モノパルス追尾の精度を決定づける本質をはっきり示しています。第 1 に、モンテカルロで得た RMS 誤差(丸)が理論曲線(破線)とよく一致しており、$\sigma_\theta \propto 1/\sqrt{\mathrm{SNR}}$ という関係が正しいことが確認できます。第 2 に、対数縦軸で直線的に低下していることから、SNR を上げるほど角度精度が着実に向上することがわかります。SNR が 10 dB 増える(電力 10 倍)ごとに、誤差はおよそ $\sqrt{10}\approx 3.2$ 分の 1 に減少しています。第 3 に、SNR が 20 dB を超えると角度誤差が 1 度を大きく下回り、ビーム幅に比べてはるかに細かい角度分解能が達成できることが読み取れます。これこそが、1 パルスで高精度測角を実現するモノパルスの真価であり、振幅変動に弱いコニカルスキャンを置き換えた理由なのです。

まとめ

本記事では、モノパルス追尾レーダーが「たった 1 つのパルス」で目標の角度誤差を高精度に検出する原理を、和ビーム・差ビームの定義からアレイ因子による導出、雑音下の精度限界まで一貫して解説しました。

  • モノパルスの核心 は、向きの異なる 2 つのビームの和 $\Sigma$ と差 $\Delta$ を作り、その比 $\Delta/\Sigma$ を取ること。比を取ることで目標の反射強度に依存しない純粋な角度情報が得られ、コニカルスキャンの振幅変動問題を解決します
  • 位相比較型 では 2 素子の受信位相差から、$\mathrm{Im}(\Delta/\Sigma) = \tan(\psi/2) \approx (\pi d/\lambda)\theta$ となり、モノパルス比の虚部が角度に比例します
  • 振幅比較型 ではスクイントした 2 ビームの振幅差から、$\Delta/\Sigma \approx -[f'(\theta_s)/f(\theta_s)]\theta$ となり、こちらは実部が角度を担います
  • 4 象限フィード によって方位・仰角の角度誤差を 1 パルスで同時に取得でき、2 次元の高速追尾が可能になります
  • 角度精度 はビーム幅に比例し SNR の平方根に反比例する($\sigma_\theta \approx \theta_B/(k_\Sigma\sqrt{2\,\mathrm{SNR}})$)。十分な SNR があればビーム幅の数十分の一の精度が達成でき、Python のモンテカルロでこの関係を確認しました

モノパルスは、フェーズドアレイのデジタルビームフォーミングと組み合わさることで現代の追尾レーダーの中核を担い続けています。和・差ビームをソフトウェアで合成し、複数目標を同時に追尾する適応モノパルスへと発展しています。

次のステップとして、以下の記事も参考にしてください。