レーダー(RADAR: Radio Detection And Ranging)は、電波を送信して目標からの反射波を受信することで、目標の位置・速度・形状などを検出するシステムです。レーダーの性能を定量的に評価する最も基本的な式が レーダー方程式 です。
レーダー方程式は、送信電力・アンテナ利得・目標までの距離・レーダー断面積(RCS)・受信機感度といったパラメータの関係を与え、レーダーシステムの設計や性能評価の出発点となります。航空管制、気象観測、軍事レーダー、自動車レーダーなど、あらゆるレーダーシステムの基礎です。
本記事の内容
- レーダーの基本原理(送信 → 反射 → 受信)
- レーダー方程式の段階的な導出
- レーダー断面積(RCS)$\sigma$ の定義と典型値
- 最大探知距離の導出
- SNR形式のレーダー方程式
- パルス積分による感度改善(コヒーレント / ノンコヒーレント)
- Pythonによるレーダーレンジ計算と感度分析
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
レーダーの基本原理
レーダーの動作は以下の3ステップで構成されます。
- 送信: 送信機がアンテナを介して電波パルスを放射する
- 反射: 電波が目標に当たり、一部が散乱・反射される
- 受信: 反射波をアンテナで受信し、信号処理で目標を検出する
目標までの距離 $R$ は、電波の往復時間 $\Delta t$ から $R = c\Delta t / 2$($c$ は光速)で求められます。
レーダー方程式の導出
レーダー方程式を、電力の流れを追って段階的に導出します。
Step 1: 等方性アンテナの電力密度
送信電力 $P_t$ [W] の等方性アンテナ(全方向に均等に放射)から距離 $R$ での電力密度は、球面の面積 $4\pi R^2$ で割ったものです。
$$ S_{\text{iso}} = \frac{P_t}{4\pi R^2} \quad [\text{W/m}^2] $$
Step 2: 指向性アンテナの電力密度
実際のアンテナは特定方向に電波を集中させます。送信アンテナ利得 $G_t$ を掛けると、目標方向の電力密度は
$$ \begin{equation} S_{\text{target}} = \frac{P_t G_t}{4\pi R^2} \quad [\text{W/m}^2] \end{equation} $$
Step 3: 目標での反射(RCS)
目標に入射した電波の一部が反射されます。目標の反射特性を表すのが レーダー断面積(RCS: Radar Cross Section)$\sigma$ [m$^2$] です。RCS は「等方的に $\sigma$ [m$^2$] の面積で電力を受けて再放射する仮想的な等方散乱体」として定義されます。
目標が再放射する総電力は
$$ P_{\text{reradiated}} = S_{\text{target}} \cdot \sigma = \frac{P_t G_t \sigma}{4\pi R^2} \quad [\text{W}] $$
Step 4: 受信アンテナでの電力密度
再放射された電力は等方的に広がると仮定します。受信アンテナ位置(距離 $R$)での電力密度は
$$ S_{\text{return}} = \frac{P_{\text{reradiated}}}{4\pi R^2} = \frac{P_t G_t \sigma}{(4\pi)^2 R^4} \quad [\text{W/m}^2] $$
距離 $R$ が 4乗 で効くことに注意してください。レーダーでは電波が往復するため、通信リンク(片道、$R^2$)よりも距離の影響が大きくなります。
Step 5: 受信電力
受信アンテナの実効開口面積 $A_e$ [m$^2$] を使うと、受信電力は
$$ P_r = S_{\text{return}} \cdot A_e = \frac{P_t G_t \sigma A_e}{(4\pi)^2 R^4} $$
アンテナ理論より、アンテナ利得 $G$ と実効開口面積 $A_e$ の関係は
$$ \begin{equation} A_e = \frac{G \lambda^2}{4\pi} \end{equation} $$
受信アンテナ利得 $G_r$ を使って $A_e = G_r\lambda^2/(4\pi)$ を代入すると、
$$ P_r = \frac{P_t G_t G_r \lambda^2 \sigma}{(4\pi)^3 R^4} $$
送受信で同じアンテナを使う(モノスタティックレーダー)場合、$G_t = G_r = G$ なので、
$$ \begin{equation} \boxed{P_r = \frac{P_t G^2 \lambda^2 \sigma}{(4\pi)^3 R^4}} \end{equation} $$
これが レーダー方程式の基本形 です。
レーダー断面積(RCS)$\sigma$
RCSの厳密な定義
RCSは以下のように定義されます。
$$ \begin{equation} \sigma = \lim_{R \to \infty} 4\pi R^2 \frac{|E_s|^2}{|E_i|^2} = \lim_{R \to \infty} 4\pi R^2 \frac{S_s}{S_i} \quad [\text{m}^2] \end{equation} $$
ここで $E_s$ は散乱電場、$E_i$ は入射電場、$S_s$ は散乱電力密度、$S_i$ は入射電力密度です。$R \to \infty$ の極限をとることで、遠方界(far field)での定義となります。
RCSはデシベル単位(dBsm: dB square meters)でも表されます。
$$ \sigma_{\text{dBsm}} = 10\log_{10}\left(\frac{\sigma}{1 \text{ m}^2}\right) $$
典型的なRCS値
| 目標 | RCS $\sigma$ [m$^2$] | RCS [dBsm] |
|---|---|---|
| 昆虫 | $10^{-5}$ | $-50$ |
| 鳥 | $10^{-2}$ | $-20$ |
| 人間 | $1$ | $0$ |
| 小型自動車 | $10$ | $10$ |
| 戦闘機(正面) | $1 \sim 10$ | $0 \sim 10$ |
| ステルス戦闘機 | $10^{-3} \sim 10^{-1}$ | $-30 \sim -10$ |
| 大型旅客機 | $100$ | $20$ |
| 大型艦船 | $10^4 \sim 10^5$ | $40 \sim 50$ |
簡単な形状のRCSの解析解
球体のRCSは、高周波近似(光学領域、$2\pi a/\lambda \gg 1$、$a$ は球の半径)では
$$ \sigma_{\text{sphere}} = \pi a^2 $$
幾何学的な断面積と一致します。これは直感的に理解しやすい結果です。
平板のRCS(法線方向入射)は
$$ \sigma_{\text{plate}} = \frac{4\pi A^2}{\lambda^2} $$
ここで $A$ は平板の面積です。幾何学的断面積よりも波長に依存して大きくなります。
最大探知距離
$R_{\max}$ の導出
レーダーが目標を検出できる最大距離は、受信電力 $P_r$ が受信機の最小検出可能信号電力 $S_{\min}$ に等しくなるときの距離です。
$$ S_{\min} = \frac{P_t G^2 \lambda^2 \sigma}{(4\pi)^3 R_{\max}^4} $$
$R_{\max}$ について解くと、
$$ \begin{equation} \boxed{R_{\max} = \left(\frac{P_t G^2 \lambda^2 \sigma}{(4\pi)^3 S_{\min}}\right)^{1/4}} \end{equation} $$
この式は、最大探知距離が各パラメータの 4乗根 に比例することを示しています。つまり、探知距離を2倍にするには、送信電力を $2^4 = 16$ 倍にしなければなりません。
パラメータの影響
$R_{\max}$ に対する各パラメータの影響を整理します。
| パラメータ | $R_{\max}$ への依存 | 2倍にする条件 |
|---|---|---|
| 送信電力 $P_t$ | $\propto P_t^{1/4}$ | $P_t$ を 16倍 |
| アンテナ利得 $G$ | $\propto G^{1/2}$ | $G$ を 4倍 |
| 波長 $\lambda$ | $\propto \lambda^{1/2}$ | $\lambda$ を 4倍 |
| RCS $\sigma$ | $\propto \sigma^{1/4}$ | $\sigma$ を 16倍 |
| 最小検出電力 $S_{\min}$ | $\propto S_{\min}^{-1/4}$ | $S_{\min}$ を 1/16 |
SNR形式のレーダー方程式
熱雑音電力
受信機のノイズフロアは、ボルツマン定数 $k_B$、受信機雑音温度 $T_s$、帯域幅 $B_n$ で決まります。
$$ N = k_B T_s B_n \quad [\text{W}] $$
雑音指数 $F_n$ を使うと、$T_s = T_0(F_n – 1) + T_0 = T_0 F_n$($T_0 = 290$ K を仮定)として
$$ N = k_B T_0 F_n B_n $$
SNR形式
受信信号のSNR(Signal-to-Noise Ratio)は $\text{SNR} = P_r / N$ なので、
$$ \begin{equation} \text{SNR} = \frac{P_t G^2 \lambda^2 \sigma}{(4\pi)^3 R^4 k_B T_0 F_n B_n} \end{equation} $$
最小検出SNR(検出閾値)を $\text{SNR}_{\min}$ とすると、最大探知距離は
$$ \begin{equation} R_{\max} = \left(\frac{P_t G^2 \lambda^2 \sigma}{(4\pi)^3 k_B T_0 F_n B_n \cdot \text{SNR}_{\min}}\right)^{1/4} \end{equation} $$
典型的には、$\text{SNR}_{\min} \approx 13$ dB(検出確率 $P_d = 0.9$、誤警報確率 $P_{fa} = 10^{-6}$ の場合)です。
デシベル形式
レーダー方程式はデシベル表記で扱うと便利です。
$$ \begin{align} \text{SNR}_{\text{dB}} &= P_t|_{\text{dBW}} + 2G|_{\text{dBi}} + \sigma|_{\text{dBsm}} + \lambda^2|_{\text{dB}} \\ &\quad – 40\log_{10}(R) – 30\log_{10}(4\pi) – k_B T_0|_{\text{dBW/Hz}} – F_n|_{\text{dB}} – B_n|_{\text{dBHz}} \end{align} $$
各項をデシベルで足し引きすることで、リンクバジェット的な計算が容易になります。
パルス積分による感度改善
コヒーレント積分
同一目標に対して $N_p$ 個のパルスを送信し、位相情報を保って加算する(コヒーレント積分)と、信号電力は $N_p^2$ 倍になり、ノイズ電力は $N_p$ 倍になります(ノイズは無相関)。
したがって、SNRは
$$ \text{SNR}_{\text{coherent}} = N_p \cdot \text{SNR}_1 $$
ここで $\text{SNR}_1$ は1パルスあたりのSNRです。コヒーレント積分利得は $N_p$($10\log_{10}(N_p)$ dB)です。
ノンコヒーレント積分
位相情報を使わずに振幅(電力)のみを加算するのがノンコヒーレント積分です。この場合の積分利得は $N_p$ より小さくなります。
Albersheim の近似式によると、ノンコヒーレント積分利得は
$$ \begin{equation} G_I(N_p) \approx N_p^{0.7 \sim 0.9} \end{equation} $$
程度です(正確な値は $\text{SNR}_1$ と $N_p$ に依存)。目安として $N_p$ が大きいほど指数は小さくなります。
パルス積分を含むレーダー方程式
$N_p$ パルスのコヒーレント積分を含む最大探知距離は
$$ R_{\max} = \left(\frac{P_t G^2 \lambda^2 \sigma N_p}{(4\pi)^3 k_B T_0 F_n B_n \cdot \text{SNR}_{\min}}\right)^{1/4} $$
パルス数を増やすことで探知距離を延ばせますが、$R_{\max} \propto N_p^{1/4}$ なので、探知距離を2倍にするには $N_p$ を16倍にする必要があります。
Pythonでの実装
レーダーレンジ計算ツール
import numpy as np
import matplotlib.pyplot as plt
def radar_range_max(Pt, G, freq, sigma, Fn, Bn, SNR_min, Np=1):
"""最大探知距離の計算
Parameters
----------
Pt : float
送信電力 [W]
G : float
アンテナ利得 [リニア値]
freq : float
周波数 [Hz]
sigma : float
RCS [m^2]
Fn : float
雑音指数 [リニア値]
Bn : float
受信帯域幅 [Hz]
SNR_min : float
最小検出SNR [リニア値]
Np : int
コヒーレント積分パルス数
Returns
-------
R_max : float
最大探知距離 [m]
"""
c = 3e8
lam = c / freq
kB = 1.38e-23 # ボルツマン定数
T0 = 290 # 標準温度 [K]
numerator = Pt * G**2 * lam**2 * sigma * Np
denominator = (4 * np.pi)**3 * kB * T0 * Fn * Bn * SNR_min
R_max = (numerator / denominator) ** 0.25
return R_max
def radar_snr(Pt, G, freq, sigma, R, Fn, Bn, Np=1):
"""指定距離でのSNR計算
Returns
-------
snr : float
SNR [リニア値]
"""
c = 3e8
lam = c / freq
kB = 1.38e-23
T0 = 290
numerator = Pt * G**2 * lam**2 * sigma * Np
denominator = (4 * np.pi)**3 * R**4 * kB * T0 * Fn * Bn
return numerator / denominator
# --- 典型的なレーダーパラメータ ---
Pt = 1e3 # 送信電力: 1 kW
G_dBi = 30 # アンテナ利得: 30 dBi
G = 10**(G_dBi/10)
freq = 3e9 # 周波数: 3 GHz (Sバンド)
sigma = 1.0 # RCS: 1 m^2 (0 dBsm)
Fn_dB = 3 # 雑音指数: 3 dB
Fn = 10**(Fn_dB/10)
Bn = 1e6 # 帯域幅: 1 MHz
SNR_min_dB = 13 # 最小検出SNR: 13 dB
SNR_min = 10**(SNR_min_dB/10)
R_max = radar_range_max(Pt, G, freq, sigma, Fn, Bn, SNR_min)
print(f'=== Radar Parameters ===')
print(f'Pt = {Pt/1e3:.1f} kW')
print(f'G = {G_dBi:.1f} dBi')
print(f'f = {freq/1e9:.1f} GHz')
print(f'σ = {10*np.log10(sigma):.1f} dBsm')
print(f'Fn = {Fn_dB:.1f} dB')
print(f'Bn = {Bn/1e6:.1f} MHz')
print(f'SNR_min = {SNR_min_dB:.1f} dB')
print(f'R_max = {R_max/1e3:.2f} km')
# SNR vs 距離のプロット
R_km = np.linspace(1, R_max/1e3 * 1.5, 500)
R_m = R_km * 1e3
snr = radar_snr(Pt, G, freq, sigma, R_m, Fn, Bn)
snr_dB = 10 * np.log10(snr + 1e-30)
fig, axes = plt.subplots(1, 2, figsize=(14, 6))
axes[0].plot(R_km, snr_dB, 'b', linewidth=2)
axes[0].axhline(y=SNR_min_dB, color='r', linestyle='--', label=f'SNR_min = {SNR_min_dB} dB')
axes[0].axvline(x=R_max/1e3, color='g', linestyle='--', label=f'R_max = {R_max/1e3:.1f} km')
axes[0].set_xlabel('Range (km)')
axes[0].set_ylabel('SNR (dB)')
axes[0].set_title('SNR vs Range')
axes[0].legend()
axes[0].grid(True)
axes[0].set_ylim([-10, 60])
# R^4 依存の確認
axes[1].loglog(R_km, snr, 'b', linewidth=2, label='Radar equation')
# R^(-4) の理論線
axes[1].loglog(R_km, snr[0] * (R_km[0]/R_km)**4, 'r--', alpha=0.5, label='R$^{-4}$ slope')
axes[1].axhline(y=SNR_min, color='orange', linestyle=':', label=f'SNR_min')
axes[1].set_xlabel('Range (km)')
axes[1].set_ylabel('SNR (linear)')
axes[1].set_title('SNR vs Range (Log-Log)')
axes[1].legend()
axes[1].grid(True, which='both', alpha=0.3)
plt.tight_layout()
plt.show()
各パラメータの感度分析
import numpy as np
import matplotlib.pyplot as plt
def radar_range_max(Pt, G, freq, sigma, Fn, Bn, SNR_min, Np=1):
"""最大探知距離の計算"""
c = 3e8
lam = c / freq
kB = 1.38e-23
T0 = 290
numerator = Pt * G**2 * lam**2 * sigma * Np
denominator = (4 * np.pi)**3 * kB * T0 * Fn * Bn * SNR_min
return (numerator / denominator) ** 0.25
# 基本パラメータ
params_base = {
'Pt': 1e3, 'G': 10**(30/10), 'freq': 3e9,
'sigma': 1.0, 'Fn': 10**(3/10), 'Bn': 1e6,
'SNR_min': 10**(13/10)
}
R_base = radar_range_max(**params_base) / 1e3 # km
print(f'Base R_max = {R_base:.2f} km')
fig, axes = plt.subplots(2, 3, figsize=(16, 10))
axes = axes.flatten()
# --- 送信電力の感度 ---
Pt_range = np.logspace(1, 5, 100) # 10 W ~ 100 kW
R_vs_Pt = [radar_range_max(Pt, params_base['G'], params_base['freq'],
params_base['sigma'], params_base['Fn'], params_base['Bn'],
params_base['SNR_min']) / 1e3 for Pt in Pt_range]
axes[0].semilogx(Pt_range/1e3, R_vs_Pt, 'b', linewidth=2)
axes[0].axvline(x=params_base['Pt']/1e3, color='r', linestyle='--', alpha=0.5)
axes[0].set_xlabel('Transmit Power (kW)')
axes[0].set_ylabel('R_max (km)')
axes[0].set_title('R_max vs Transmit Power (∝ Pt^{1/4})')
axes[0].grid(True)
# --- アンテナ利得の感度 ---
G_dBi_range = np.linspace(10, 45, 100)
G_range = 10**(G_dBi_range/10)
R_vs_G = [radar_range_max(params_base['Pt'], G_val, params_base['freq'],
params_base['sigma'], params_base['Fn'], params_base['Bn'],
params_base['SNR_min']) / 1e3 for G_val in G_range]
axes[1].plot(G_dBi_range, R_vs_G, 'b', linewidth=2)
axes[1].axvline(x=30, color='r', linestyle='--', alpha=0.5)
axes[1].set_xlabel('Antenna Gain (dBi)')
axes[1].set_ylabel('R_max (km)')
axes[1].set_title('R_max vs Antenna Gain (∝ G^{1/2})')
axes[1].grid(True)
# --- 周波数の感度 ---
freq_range = np.linspace(0.5e9, 20e9, 100)
R_vs_freq = [radar_range_max(params_base['Pt'], params_base['G'], f,
params_base['sigma'], params_base['Fn'], params_base['Bn'],
params_base['SNR_min']) / 1e3 for f in freq_range]
axes[2].plot(freq_range/1e9, R_vs_freq, 'b', linewidth=2)
axes[2].axvline(x=3, color='r', linestyle='--', alpha=0.5)
axes[2].set_xlabel('Frequency (GHz)')
axes[2].set_ylabel('R_max (km)')
axes[2].set_title('R_max vs Frequency (∝ λ^{1/2} = (c/f)^{1/2})')
axes[2].grid(True)
# --- RCSの感度 ---
sigma_range = np.logspace(-3, 3, 100)
R_vs_sigma = [radar_range_max(params_base['Pt'], params_base['G'],
params_base['freq'], sig, params_base['Fn'], params_base['Bn'],
params_base['SNR_min']) / 1e3 for sig in sigma_range]
axes[3].semilogx(sigma_range, R_vs_sigma, 'b', linewidth=2)
axes[3].axvline(x=1.0, color='r', linestyle='--', alpha=0.5)
axes[3].set_xlabel('RCS σ (m²)')
axes[3].set_ylabel('R_max (km)')
axes[3].set_title('R_max vs RCS (∝ σ^{1/4})')
axes[3].grid(True)
# --- 雑音指数の感度 ---
Fn_dB_range = np.linspace(1, 10, 100)
Fn_range = 10**(Fn_dB_range/10)
R_vs_Fn = [radar_range_max(params_base['Pt'], params_base['G'],
params_base['freq'], params_base['sigma'], Fn_val,
params_base['Bn'], params_base['SNR_min']) / 1e3
for Fn_val in Fn_range]
axes[4].plot(Fn_dB_range, R_vs_Fn, 'b', linewidth=2)
axes[4].axvline(x=3, color='r', linestyle='--', alpha=0.5)
axes[4].set_xlabel('Noise Figure (dB)')
axes[4].set_ylabel('R_max (km)')
axes[4].set_title('R_max vs Noise Figure (∝ Fn^{-1/4})')
axes[4].grid(True)
# --- パルス積分の効果 ---
Np_range = np.arange(1, 129)
R_vs_Np = [radar_range_max(params_base['Pt'], params_base['G'],
params_base['freq'], params_base['sigma'], params_base['Fn'],
params_base['Bn'], params_base['SNR_min'], Np=Np_val) / 1e3
for Np_val in Np_range]
axes[5].plot(Np_range, R_vs_Np, 'b', linewidth=2, label='Coherent')
# ノンコヒーレント積分(近似)
R_vs_Np_nc = [radar_range_max(params_base['Pt'], params_base['G'],
params_base['freq'], params_base['sigma'], params_base['Fn'],
params_base['Bn'], params_base['SNR_min'],
Np=int(Np_val**0.8)) / 1e3 for Np_val in Np_range]
axes[5].plot(Np_range, R_vs_Np_nc, 'r--', linewidth=2, label='Non-coherent (approx)')
axes[5].set_xlabel('Number of Pulses')
axes[5].set_ylabel('R_max (km)')
axes[5].set_title('R_max vs Pulse Integration')
axes[5].legend()
axes[5].grid(True)
plt.suptitle('Radar Equation Sensitivity Analysis', fontsize=14, fontweight='bold')
plt.tight_layout()
plt.show()
リンクバジェット計算
レーダー方程式をデシベル形式でリンクバジェットとして計算する例です。
import numpy as np
def radar_link_budget(Pt_dBW, G_dBi, freq_GHz, sigma_dBsm, R_km,
Fn_dB, Bn_dBHz, Np=1):
"""レーダーリンクバジェット計算(デシベル形式)
Returns
-------
budget : dict
各項のデシベル値
"""
c = 3e8
lam = c / (freq_GHz * 1e9)
# 各項の計算
budget = {}
budget['Pt (dBW)'] = Pt_dBW
budget['Gt (dBi)'] = G_dBi
budget['Gr (dBi)'] = G_dBi
budget['λ² (dB)'] = 20 * np.log10(lam)
budget['σ (dBsm)'] = sigma_dBsm
budget['(4π)³ (dB)'] = -30 * np.log10(4 * np.pi) # 損失として負
budget['R⁴ (dB)'] = -40 * np.log10(R_km * 1e3) # 損失として負
budget['kT₀ (dBW/Hz)'] = 10 * np.log10(1.38e-23 * 290)
budget['Fn (dB)'] = -Fn_dB # 損失
budget['Bn (dBHz)'] = -Bn_dBHz # 損失
budget['Np (dB)'] = 10 * np.log10(Np)
# SNR = 合計
snr_dB = sum(budget.values())
return budget, snr_dB
# リンクバジェット計算
budget, snr_dB = radar_link_budget(
Pt_dBW=30, # 1 kW
G_dBi=30,
freq_GHz=3.0,
sigma_dBsm=0, # 1 m²
R_km=50,
Fn_dB=3,
Bn_dBHz=60, # 1 MHz
Np=16
)
print('=== Radar Link Budget ===')
print('-' * 40)
total = 0
for key, val in budget.items():
print(f'{key:20s}: {val:+8.2f} dB')
total += val
print('-' * 40)
print(f'{"SNR":20s}: {snr_dB:+8.2f} dB')
print(f'{"SNR_min (target)":20s}: {13:+8.2f} dB')
print(f'{"Margin":20s}: {snr_dB - 13:+8.2f} dB')
RCS比較プロット
import numpy as np
import matplotlib.pyplot as plt
def radar_range_max(Pt, G, freq, sigma, Fn, Bn, SNR_min, Np=1):
"""最大探知距離の計算"""
c = 3e8
lam = c / freq
kB = 1.38e-23
T0 = 290
numerator = Pt * G**2 * lam**2 * sigma * Np
denominator = (4 * np.pi)**3 * kB * T0 * Fn * Bn * SNR_min
return (numerator / denominator) ** 0.25
# 典型パラメータ
Pt = 10e3 # 10 kW
G = 10**(35/10)
freq = 10e9 # Xバンド
Fn = 10**(4/10)
Bn = 5e6
SNR_min = 10**(13/10)
# 様々な目標のRCS
targets = {
'Stealth fighter': 0.01,
'Small drone': 0.1,
'Fighter (front)': 3.0,
'Airliner': 100,
'Ship': 10000,
}
fig, ax = plt.subplots(figsize=(10, 6))
for name, sigma in targets.items():
R = np.linspace(1e3, 500e3, 1000)
snr_dB = 10 * np.log10(
Pt * G**2 * (3e8/freq)**2 * sigma
/ ((4*np.pi)**3 * R**4 * 1.38e-23 * 290 * Fn * Bn)
+ 1e-30
)
ax.plot(R/1e3, snr_dB, linewidth=2,
label=f'{name} (σ={sigma} m²)')
ax.axhline(y=13, color='k', linestyle='--', linewidth=2, label='Detection threshold (13 dB)')
ax.set_xlabel('Range (km)')
ax.set_ylabel('SNR (dB)')
ax.set_title('SNR vs Range for Various Targets (X-band, 10 kW)')
ax.set_ylim([-20, 80])
ax.legend(fontsize=9)
ax.grid(True)
plt.tight_layout()
plt.show()
このプロットから、ステルス戦闘機(RCS: 0.01 m$^2$)の探知距離が大型旅客機(RCS: 100 m$^2$)の約 1/10 になることが視覚的に確認できます($R_{\max} \propto \sigma^{1/4}$ なので $(100/0.01)^{1/4} \approx 10$)。
まとめ
本記事では、レーダー方程式の導出と物理的意味について解説しました。
- レーダー方程式は、送信電力 → アンテナ利得 → 自由空間伝搬 → RCS反射 → 受信開口面積の電力伝搬を追うことで段階的に導出される
- 基本形は $P_r = P_t G^2 \lambda^2 \sigma / (4\pi)^3 R^4$ であり、距離の4乗に反比例する
- RCS $\sigma$ は目標の電波反射特性を表す量で、目標の形状・材質・周波数に依存する
- 最大探知距離 $R_{\max} = (P_t G^2 \lambda^2 \sigma / (4\pi)^3 S_{\min})^{1/4}$ は各パラメータの4乗根に比例する
- SNR形式のレーダー方程式は受信機ノイズを明示的に含み、デシベル形式でリンクバジェット計算に利用できる
- パルス積分によりSNRを改善でき、コヒーレント積分では $N_p$ 倍の利得が得られる
次のステップとして、以下の記事も参考にしてください。