第25篇:自由空间、双射线与菲涅尔区
延申阅读:
引用请写:Low Earth Orbit Satellite Networks for 6G: A Review of Ground-Satellite Channel Link Budget. TechRxiv. 08 September 2025.
DOI: https://doi.org/10.36227/techrxiv.175735665.55050224/v1
一、作用:信号"走"了多远,损失了多少?
前24篇,我们讨论了大量的检测、测向、定位算法。所有这些算法都有一个隐含前提:
接收机收到了足够强的信号。
但信号从辐射源传到接收机,中间经历了什么?能量损失了多少?这就是传播模型(Propagation Model) 要回答的问题。
传播模型在电子战中的三大用途:
- 作用距离预测:给定发射功率和接收灵敏度,能侦测多远?
- 链路预算:系统设计时如何分配功率、增益、损耗?
- 定位精度预测:SNR 决定测向/定位精度,而 SNR 由传播损耗决定。
三种最基础的传播模型:
| 模型 | 适用场景 | 核心特征 |
|---|---|---|
| 自由空间 | 卫星链路、视距通信 | 功率按 1 / R 2 1/R^2 1/R2 衰减 |
| 双射线 | 地面雷达、低空目标 | 直射 + 地面反射干涉 |
| 菲涅尔区 | 判断路径是否被阻挡 | 几何无障碍判据 |
本篇核心作用:从自由空间路径损耗公式出发,推导双射线模型的干涉图案;引入菲涅尔区的几何定义;用 MATLAB 画出三种模型的损耗曲线;复现原书附录 B(图B.4)。
代码出处 :appB_drawFigures(图B.4)、+prop/ 模块。
二、原理:数学上发生了什么?
2.1 自由空间路径损耗(FSPL)
Friis 传输公式 :距离 R R R 处的接收功率为:
P r = P t ⋅ G t ⋅ G r ⋅ ( λ 4 π R ) 2 P_r = P_t \cdot G_t \cdot G_r \cdot \left(\frac{\lambda}{4\pi R}\right)^2 Pr=Pt⋅Gt⋅Gr⋅(4πRλ)2
自由空间路径损耗定义为发射功率与接收功率之比:
L F S P L = P t P r = ( 4 π R ) 2 G t G r λ 2 \boxed{L_{FSPL} = \frac{P_t}{P_r} = \frac{(4\pi R)^2}{G_t G_r \lambda^2}} LFSPL=PrPt=GtGrλ2(4πR)2
对于各向同性天线 ( G t = G r = 1 G_t = G_r = 1 Gt=Gr=1):
L F S P L = ( 4 π R λ ) 2 L_{FSPL} = \left(\frac{4\pi R}{\lambda}\right)^2 LFSPL=(λ4πR)2
以 dB 表示:
L F S P L , d B = 20 log 10 ( 4 π R λ ) = 32.45 + 20 log 10 ( f M H z ) + 20 log 10 ( R k m ) L_{FSPL,dB} = 20\log_{10}\left(\frac{4\pi R}{\lambda}\right) = 32.45 + 20\log_{10}(f_{MHz}) + 20\log_{10}(R_{km}) LFSPL,dB=20log10(λ4πR)=32.45+20log10(fMHz)+20log10(Rkm)
关键特征:
- 距离每翻一倍 ,损耗增加 6 dB;
- 频率每翻一倍 ,损耗增加 6 dB;
- 与距离成 R 2 R^2 R2 关系------双程雷达 则成 R 4 R^4 R4。
2.2 双射线模型(Two-Ray Model)
当目标低空、天线不高时,接收信号包含:
- 直射路径 :长度 R d i r e c t = R 2 + ( h t − h r ) 2 R_{direct} = \sqrt{R^2 + (h_t - h_r)^2} Rdirect=R2+(ht−hr)2 ;
- 地面反射路径 :长度 R r e f l e c t e d = R 2 + ( h t + h r ) 2 R_{reflected} = \sqrt{R^2 + (h_t + h_r)^2} Rreflected=R2+(ht+hr)2 。
其中 h t h_t ht 是发射天线高度, h r h_r hr 是接收天线高度。
反射系数 :对于水平极化或垂直极化,掠射角下的反射系数约为 − 1 -1 −1(半波损失)。因此两路信号反相。
总接收功率:
P r = P t G t G r ∣ λ 4 π ( e − j k R d i r e c t R d i r e c t + Γ e − j k R r e f l e c t e d R r e f l e c t e d ) ∣ 2 P_r = P_t G_t G_r \left| \frac{\lambda}{4\pi} \left( \frac{e^{-jkR_{direct}}}{R_{direct}} + \Gamma \frac{e^{-jkR_{reflected}}}{R_{reflected}} \right) \right|^2 Pr=PtGtGr 4πλ(Rdirecte−jkRdirect+ΓRreflectede−jkRreflected) 2
其中 Γ ≈ − 1 \Gamma \approx -1 Γ≈−1, k = 2 π / λ k = 2\pi/\lambda k=2π/λ。
简化结果 (当 R ≫ h t , h r R \gg h_t, h_r R≫ht,hr 时):
L t w o − r a y ≈ ( R 2 h t h r ) 2 L_{two-ray} \approx \left( \frac{R^2}{h_t h_r} \right)^2 Ltwo−ray≈(hthrR2)2
关键特征:
- 距离每翻一倍 ,损耗增加 12 dB(比自由空间多一倍);
- 与天线高度的平方成反比 ------天线越高,损耗越小;
- 存在干涉零点 ------当 R r e f l e c t e d − R d i r e c t = n λ R_{reflected} - R_{direct} = n\lambda Rreflected−Rdirect=nλ 时,两路反相,信号完全抵消。
干涉零点的距离:
R n u l l ≈ 2 h t h r λ ⋅ 1 n , n = 1 , 3 , 5 , ... R_{null} \approx \frac{2 h_t h_r}{\lambda} \cdot \frac{1}{n}, \quad n = 1, 3, 5, \ldots Rnull≈λ2hthr⋅n1,n=1,3,5,...
2.3 菲涅尔区(Fresnel Zone)
问题:直射路径上有一个障碍物(山、建筑),会不会阻挡信号?
菲涅尔区 给出答案。定义第一菲涅尔区半径为:
R F Z = λ ⋅ d 1 ⋅ d 2 d 1 + d 2 \boxed{R_{FZ} = \sqrt{\frac{\lambda \cdot d_1 \cdot d_2}{d_1 + d_2}}} RFZ=d1+d2λ⋅d1⋅d2
其中 d 1 d_1 d1、 d 2 d_2 d2 是障碍物到发射端和接收端的距离。
工程判据:
- 障碍物完全在菲涅尔区外:信号近似自由空间传播,无额外损耗;
- 障碍物占据菲涅尔区 20% 以内:损耗 < 1 dB,可忽略;
- 障碍物占据菲涅尔区 40% 以上:损耗显著增大;
- 障碍物占据超过 60%:损耗急剧上升,接近阴影区。
最低天线高度 :如果 d 1 = d 2 = R / 2 d_1 = d_2 = R/2 d1=d2=R/2(障碍物在中点),第一菲涅尔区半径为:
R F Z = 1 2 λ R R_{FZ} = \frac{1}{2}\sqrt{\lambda R} RFZ=21λR
要保证"畅通",天线需高出障碍物至少 0.6 倍 这个值:
h m i n ≈ 0.6 ⋅ 1 2 λ R = 0.3 λ R h_{min} \approx 0.6 \cdot \frac{1}{2}\sqrt{\lambda R} = 0.3\sqrt{\lambda R} hmin≈0.6⋅21λR =0.3λR
这就是为什么微波链路的天线要建得很高------不仅仅是"看得远",而是要"让菲涅尔区空旷"。
2.4 三种模型的对比
| 距离范围 | 主导模型 | 损耗斜率 |
|---|---|---|
| R < R b r e a k R < R_{break} R<Rbreak | 自由空间 | 20 dB/decade |
| R > R b r e a k R > R_{break} R>Rbreak | 双射线 | 40 dB/decade |
转折距离 R b r e a k R_{break} Rbreak 由下式确定:
R b r e a k = 4 h t h r λ R_{break} = \frac{4 h_t h_r}{\lambda} Rbreak=λ4hthr
这个距离标志着从"直射主导"过渡到"反射主导"。
三、完整代码(可直接运行)

matlab
%% ========================================================================
% 第25篇:自由空间、双射线与菲涅尔区
% 参考出处:O'Donoughue, "Emitter Detection and Geolocation for EW",
% appB_drawFigures.m, Figure B.4
% https://github.com/nodonoughue/emitter-detection-book
% ========================================================================
clear; close all; clc;
rng(2024);
c = 3e8;
%% ==================== 图1:自由空间路径损耗 ====================
fprintf('======= 自由空间路径损耗 =======\n');
% 距离扫描
R_m = logspace(1, 6, 500); % 10 m 到 1000 km
R_km = R_m / 1e3;
% 频率扫描
freq_set = [1e9, 3e9, 10e9]; % 1 GHz, 3 GHz, 10 GHz
freq_names = {'L 波段 (1 GHz)', 'S 波段 (3 GHz)', 'X 波段 (10 GHz)'};
figure('Name','Fig1 FSPL','Position',[80 80 900 600]);
hold on;
colors = lines(numel(freq_set));
for idx = 1:numel(freq_set)
f = freq_set(idx);
lambda = c / f;
L_dB = 20*log10(4*pi*R_m / lambda);
semilogx(R_km, L_dB, 'Color', colors(idx,:), 'LineWidth', 2, ...
'DisplayName', freq_names{idx});
% 标注关键点
if idx == 1
% 1 km 处的损耗
L_1km = 20*log10(4*pi*1e3 / lambda);
plot(1, L_1km, 'o', 'Color', colors(idx,:), ...
'MarkerSize', 12, 'MarkerFaceColor', colors(idx,:), ...
'HandleVisibility', 'off');
text(1.2, L_1km, sprintf('%.1f dB', L_1km), 'FontSize', 10);
end
end
xlabel('距离 R [km]'); ylabel('路径损耗 [dB]');
title('自由空间路径损耗 vs 距离');
grid on; legend('Location', 'northwest');
xlim([0.01, 1000]); ylim([60, 180]);
% 标注 6 dB/倍频关系
text(100, 140, '距离翻倍 → +6 dB', 'FontSize', 11, ...
'BackgroundColor', 'w', 'EdgeColor', 'k');
%% ==================== 图2:双射线模型 ====================
fprintf('\n======= 双射线模型 =======\n');
% 参数
ht_set = [10, 30, 100]; % 发射天线高度 [m]
hr = 2; % 接收天线高度 [m]
f = 1e9; % 1 GHz
lambda = c / f;
R_m = logspace(1, 5, 500);
R_km = R_m / 1e3;
figure('Name','Fig2 Two-Ray','Position',[100 100 900 600]);
hold on;
colors = lines(numel(ht_set));
for idx = 1:numel(ht_set)
ht = ht_set(idx);
% 自由空间
L_fspl = 20*log10(4*pi*R_m / lambda);
% 双射线(简化公式,R >> ht, hr)
L_two_ray = 20*log10(R_m.^2 / (ht * hr));
% 转折距离
R_break = 4 * ht * hr / lambda;
fprintf('ht = %d m 的转折距离: %.1f m\n', ht, R_break);
% 组合模型:R < R_break 用自由空间,R > R_break 用双射线
L_combined = zeros(size(R_m));
L_combined(R_m < R_break) = L_fspl(R_m < R_break);
L_combined(R_m >= R_break) = L_two_ray(R_m >= R_break);
semilogx(R_km, L_combined, 'Color', colors(idx,:), 'LineWidth', 2, ...
'DisplayName', sprintf('h_t = %d m', ht));
% 标注转折点
plot(R_break/1e3, interp1(R_km, L_combined, R_break/1e3), 'o', ...
'Color', colors(idx,:), 'MarkerSize', 12, ...
'MarkerFaceColor', colors(idx,:), 'HandleVisibility', 'off');
end
% 参考:纯自由空间
L_fspl_ref = 20*log10(4*pi*R_m / lambda);
semilogx(R_km, L_fspl_ref, 'k--', 'LineWidth', 1.5, ...
'DisplayName', '自由空间(参考)');
xlabel('距离 R [km]'); ylabel('路径损耗 [dB]');
title('双射线模型:直射 + 地面反射');
grid on; legend('Location', 'northwest');
xlim([0.01, 100]); ylim([40, 200]);
% 标注斜率变化
text(0.05, 150, '自由空间: 20 dB/decade', 'FontSize', 10, ...
'BackgroundColor', 'w');
text(5, 180, '双射线: 40 dB/decade', 'FontSize', 10, ...
'BackgroundColor', 'w');
%% ==================== 图3:双射线干涉图案 ====================
fprintf('\n======= 双射线干涉图案 =======\n');
% 固定天线高度
ht = 30;
hr = 2;
f = 1e9;
lambda = c / f;
R_fine = linspace(100, 5000, 5000); % 100 m 到 5 km
% 精确的双射线模型
R_direct = sqrt(R_fine.^2 + (ht - hr)^2);
R_reflected = sqrt(R_fine.^2 + (ht + hr)^2);
% 反射系数 = -1(掠射)
k = 2*pi/lambda;
% 复振幅
E_total = exp(-1j*k*R_direct)./R_direct - ...
exp(-1j*k*R_reflected)./R_reflected;
% 路径损耗
L_two_ray = -20*log10(abs(E_total) * lambda/(4*pi));
% 自由空间参考
L_fspl = 20*log10(4*pi*R_fine / lambda);
figure('Name','Fig3 Interference','Position',[120 120 900 600]);
plot(R_fine/1e3, L_two_ray, 'b-', 'LineWidth', 1.5, ...
'DisplayName', '双射线(精确)');
hold on;
plot(R_fine/1e3, L_fspl, 'r--', 'LineWidth', 1.5, ...
'DisplayName', '自由空间');
xlabel('距离 R [km]'); ylabel('路径损耗 [dB]');
title('双射线干涉图案:零点与峰值交替');
grid on; legend('Location', 'northwest');
xlim([0.1, 5]); ylim([60, 120]);
% 标注几个零点
R_null_est = 2*ht*hr/lambda ./ (1:2:9);
for idx = 1:length(R_null_est)
if R_null_est(idx) < 5000 && R_null_est(idx) > 100
xline(R_null_est(idx)/1e3, 'g:', 'LineWidth', 1);
end
end
text(0.5, 110, '零点(干涉抵消)', 'FontSize', 10, 'Color', 'g');
%% ==================== 图4:菲涅尔区几何 ====================
fprintf('\n======= 菲涅尔区几何 =======\n');
% 场景:发射端和接收端相距 d
d_total = 10000; % 10 km
f = 1e9;
lambda = c / f;
% 障碍物位置扫描
d1_set = [1000, 3000, 5000, 7000, 9000];
% 第一菲涅尔区半径
R_FZ = sqrt(lambda * d1_set .* (d_total - d1_set) / d_total);
fprintf('第一菲涅尔区半径:\n');
fprintf('%-10s %-15s\n', 'd1 [m]', 'R_FZ [m]');
fprintf('------------------------\n');
for idx = 1:length(d1_set)
fprintf('%-10d %-15.2f\n', d1_set(idx), R_FZ(idx));
end
% 绘图
figure('Name','Fig4 Fresnel Zone','Position',[140 140 900 600]);
% 画地形
x_terrain = linspace(0, d_total, 1000);
h_terrain = 20 + 10*sin(2*pi*x_terrain/d_total) + ...
5*cos(4*pi*x_terrain/d_total);
fill([x_terrain, fliplr(x_terrain)]/1e3, ...
[h_terrain, zeros(size(h_terrain))], ...
[0.7, 0.5, 0.3], 'FaceAlpha', 0.5, 'EdgeColor', 'k');
hold on;
% 天线高度
ht = 50;
hr = 50;
% 天线位置
plot([0, d_total]/1e3, [ht, hr], 'ks', 'MarkerSize', 14, ...
'MarkerFaceColor', 'k');
% 视距线
plot([0, d_total]/1e3, [ht, hr], 'b-', 'LineWidth', 1.5);
% 菲涅尔区包络
x_FZ = linspace(0, d_total, 200);
R_FZ_env = sqrt(lambda * x_FZ .* (d_total - x_FZ) / d_total);
% 上边界
h_upper = ht + (hr - ht) * x_FZ/d_total + R_FZ_env;
h_lower = ht + (hr - ht) * x_FZ/d_total - R_FZ_env;
plot(x_FZ/1e3, h_upper, 'r--', 'LineWidth', 2);
plot(x_FZ/1e3, h_lower, 'r--', 'LineWidth', 2);
fill([x_FZ, fliplr(x_FZ)]/1e3, [h_upper, fliplr(h_lower)], ...
'r', 'FaceAlpha', 0.1, 'EdgeColor', 'none');
% 标注
xlabel('距离 [km]'); ylabel('高度 [m]');
title('菲涅尔区几何:天线高度与视距传播');
grid on; legend({'地形', '天线', '视距', '第一菲涅尔区'}, ...
'Location', 'northwest');
xlim([0, 10]); ylim([0, 100]);
% 标注最高点
[max_R_FZ, idx_max] = max(R_FZ_env);
plot(x_FZ(idx_max)/1e3, ht + (hr-ht)*x_FZ(idx_max)/d_total, 'ro', ...
'MarkerSize', 12, 'MarkerFaceColor', 'r');
text(x_FZ(idx_max)/1e3 + 0.2, ht + (hr-ht)*x_FZ(idx_max)/d_total + 10, ...
sprintf('R_{FZ,max} = %.1f m', max_R_FZ), 'FontSize', 11);
%% ==================== 图5:天线高度对损耗的影响 ====================
fprintf('\n======= 天线高度对损耗的影响 =======\n');
% 参数
ht_set = [5, 10, 20, 50, 100];
hr = 2;
f = 1e9;
lambda = c / f;
R = 5000; % 5 km
L_two_ray_set = zeros(size(ht_set));
for idx = 1:numel(ht_set)
ht = ht_set(idx);
L_two_ray_set(idx) = 20*log10(R^2 / (ht * hr));
end
figure('Name','Fig5 Antenna Height','Position',[160 160 900 600]);
subplot(1,2,1);
bar(1:numel(ht_set), L_two_ray_set);
set(gca, 'XTickLabel', arrayfun(@(x) sprintf('h_t=%d m', x), ht_set, ...
'UniformOutput', false));
ylabel('双射线路径损耗 [dB]');
title(sprintf('天线高度对损耗的影响 (R=%d km)', R/1e3));
grid on;
for i = 1:numel(ht_set)
text(i, L_two_ray_set(i)+1, sprintf('%.1f', L_two_ray_set(i)), ...
'HorizontalAlignment', 'center', 'FontSize', 11);
end
subplot(1,2,2);
semilogy(ht_set, 10.^(L_two_ray_set/10), 'bo-', 'LineWidth', 2, ...
'MarkerSize', 10);
xlabel('天线高度 h_t [m]'); ylabel('路径损耗(线性)');
title('损耗与天线高度的平方反比关系');
grid on;
sgtitle('双射线模型:天线越高,损耗越小', ...
'FontSize', 14, 'FontWeight', 'bold');
%% ==================== 图6:三种模型综合对比 ====================
fprintf('\n======= 三种模型综合对比 =======\n');
R_m = logspace(1, 5, 500);
R_km = R_m / 1e3;
% 参数
f = 1e9;
lambda = c / f;
ht = 30;
hr = 2;
% 自由空间
L_fspl = 20*log10(4*pi*R_m / lambda);
% 双射线(简化)
L_two_ray = 20*log10(R_m.^2 / (ht * hr));
% 组合模型
R_break = 4 * ht * hr / lambda;
L_combined = L_fspl;
L_combined(R_m > R_break) = L_two_ray(R_m > R_break);
% 菲涅尔区半径(中点处)
R_FZ = 0.5 * sqrt(lambda * R_m);
figure('Name','Fig6 Model Comparison','Position',[180 180 900 700]);
subplot(2,1,1);
semilogx(R_km, L_fspl, 'b--', 'LineWidth', 2, 'DisplayName', '自由空间');
hold on;
semilogx(R_km, L_two_ray, 'r-.', 'LineWidth', 2, 'DisplayName', '双射线');
semilogx(R_km, L_combined, 'k-', 'LineWidth', 2.5, 'DisplayName', '组合模型');
xline(R_break/1e3, 'g:', 'LineWidth', 2, 'DisplayName', ...
sprintf('转折距离 %.0f m', R_break));
xlabel('距离 R [km]'); ylabel('路径损耗 [dB]');
title('路径损耗模型对比');
grid on; legend('Location', 'northwest');
xlim([0.01, 100]); ylim([40, 200]);
subplot(2,1,2);
semilogx(R_km, R_FZ, 'm-', 'LineWidth', 2);
xlabel('距离 R [km]'); ylabel('第一菲涅尔区半径 [m]');
title('菲涅尔区半径 vs 距离(中点处)');
grid on;
xlim([0.01, 100]);
sgtitle('三种传播模型综合对比', ...
'FontSize', 14, 'FontWeight', 'bold');
fprintf('\n转折距离: %.1f m = %.3f km\n', R_break, R_break/1e3);
fprintf('在 1 km 处,菲涅尔区半径 = %.2f m\n', 0.5*sqrt(lambda*1000));
fprintf('在 10 km 处,菲涅尔区半径 = %.2f m\n', 0.5*sqrt(lambda*10000));
fprintf('\n======= 全部完成 =======\n');
四、代码讲解:为什么这么写?
4.1 为什么双射线模型在远距离"损耗更大"?
matlab
L_two_ray = 20*log10(R_m.^2 / (ht * hr));
物理直觉 :当目标很远时,直射路径和反射路径几乎平行 ,两条路径的长度差很小。但由于反射系数为 − 1 -1 −1(半波损失),两路信号反相,几乎完全抵消。
数学推导 :当 R ≫ h t , h r R \gg h_t, h_r R≫ht,hr 时:
R d i r e c t ≈ R , R r e f l e c t e d ≈ R + 2 h t h r R R_{direct} \approx R, \quad R_{reflected} \approx R + \frac{2 h_t h_r}{R} Rdirect≈R,Rreflected≈R+R2hthr
路径差 Δ R ≈ 2 h t h r / R \Delta R \approx 2h_t h_r / R ΔR≈2hthr/R。当 Δ R ≪ λ \Delta R \ll \lambda ΔR≪λ 时,相位差 Δ ϕ ≈ 0 \Delta\phi \approx 0 Δϕ≈0,但反射系数引入 π \pi π 相位差------所以两路反相。
接收场强:
∣ E ∣ ≈ 1 R ⋅ k Δ R = 2 π λ ⋅ 2 h t h r R 2 |E| \approx \frac{1}{R} \cdot k \Delta R = \frac{2\pi}{\lambda} \cdot \frac{2 h_t h_r}{R^2} ∣E∣≈R1⋅kΔR=λ2π⋅R22hthr
路径损耗:
L = ( 4 π R λ ∣ E ∣ ) 2 ∝ R 4 ( h t h r ) 2 L = \left(\frac{4\pi R}{\lambda |E|}\right)^2 \propto \frac{R^4}{(h_t h_r)^2} L=(λ∣E∣4πR)2∝(hthr)2R4
距离四次方关系 → dB 表示下 40 dB/decade。
4.2 转折距离的物理意义
matlab
R_break = 4 * ht * hr / lambda;
推导 :当路径差 Δ R = λ / 2 \Delta R = \lambda/2 ΔR=λ/2 时,相位差恰好为 π \pi π,直射和反射从"增强"变为"抵消"。
R b r e a k ≈ 4 h t h r λ R_{break} \approx \frac{4 h_t h_r}{\lambda} Rbreak≈λ4hthr
工程含义:
- R < R b r e a k R < R_{break} R<Rbreak:直射主导,近似自由空间;
- R > R b r e a k R > R_{break} R>Rbreak:反射主导,双射线模型。
对于 h t = 30 h_t = 30 ht=30 m、 h r = 2 h_r = 2 hr=2 m、 f = 1 f = 1 f=1 GHz, R b r e a k = 800 R_{break} = 800 Rbreak=800 m。这就是为什么蜂窝基站的天线通常只有几十米高------覆盖范围(1-10 km)远超转折距离,双射线模型是主战场。
4.3 菲涅尔区半径的"最大在中点"
matlab
R_FZ = sqrt(lambda * d1 .* (d2) / d_total);
关键 : d 1 d 2 d_1 d_2 d1d2 在 d 1 = d 2 = d t o t a l / 2 d_1 = d_2 = d_{total}/2 d1=d2=dtotal/2 处取得最大值:
R F Z , m a x = λ ⋅ d t o t a l 2 ⋅ d t o t a l 2 / d t o t a l = 1 2 λ d t o t a l R_{FZ,max} = \sqrt{\lambda \cdot \frac{d_{total}}{2} \cdot \frac{d_{total}}{2} / d_{total}} = \frac{1}{2}\sqrt{\lambda d_{total}} RFZ,max=λ⋅2dtotal⋅2dtotal/dtotal =21λdtotal
物理直觉 :菲涅尔区是"椭圆",障碍物越靠近路径中间,它需要"让出"的空间越大------因为椭圆的腰在中间最粗。
工程用法 :检查链路是否被阻挡时,只需检查障碍物最高点,看看它是否侵入菲涅尔区。通常要求"第一菲涅尔区 60% 空闲"。
4.4 为什么图3要画"干涉图案"?
matlab
E_total = exp(-1j*k*R_direct)./R_direct - exp(-1j*k*R_reflected)./R_reflected;
精确的双射线模型 不需要简化------它直接计算直射和反射的复振幅,然后叠加。干涉图案自然显现:
- 零点 :两路反相,完全抵消------路径损耗无穷大;
- 峰值 :两路同相,增强------路径损耗比自由空间还小。
工程含义 :在某些距离上,信号会突然"消失"------这不是设备故障,而是物理上的干涉。雷达探测时需要在多个距离上扫描,避免这种"盲区"。
4.5 组合模型的"三区域"
matlab
L_combined = L_fspl;
L_combined(R_m > R_break) = L_two_ray(R_m > R_break);
分段模型是工程上最常用的近似:
| 区域 | 距离 | 主导机制 | 斜率 |
|---|---|---|---|
| 近场 | R < R b r e a k R < R_{break} R<Rbreak | 直射 | 20 dB/dec |
| 远场 | R > R b r e a k R > R_{break} R>Rbreak | 反射 | 40 dB/dec |
为什么分段? 因为精确的双射线模型有无数个零点,工程上不方便使用。分段近似平滑掉了这些零点,让链路预算更简单。
代价 :在某些特定距离上,近似模型会高估或低估损耗。但对于系统设计,分段模型足够。
五、运行结果解读
运行代码后,你将看到 6 张图:
图1:自由空间路径损耗
三条平行的直线(对数坐标下)------斜率相同(6 dB/倍频) ,但垂直偏移不同(频率越高,损耗越大)。
图2:双射线模型
三条曲线( h t = 10 , 30 , 100 h_t = 10, 30, 100 ht=10,30,100 m):
- 近处:所有曲线与自由空间重合;
- 远处:曲线变陡(40 dB/dec),且天线越高,损耗越小;
- 转折点 :由
plot(R_break/1e3, ...)标注, h t h_t ht 越大,转折越远。
图3:双射线干涉图案
蓝色曲线(精确双射线)在自由空间参考线(红色)上下剧烈振荡:
- 谷点(信号增强)比自由空间还好;
- 峰点(信号抵消)比自由空间差很多。
绿色虚线标注了几个零点位置------它们正好在 R n u l l = 2 h t h r / ( n λ ) R_{null} = 2h_t h_r/(n\lambda) Rnull=2hthr/(nλ) 处。
图4:菲涅尔区几何
- 棕色:地面地形(起伏);
- 黑色:天线;
- 蓝色:视距线;
- 红色虚线 + 淡红填充:第一菲涅尔区。
可以看到,菲涅尔区在中间最"胖"------如果地形的高点侵入这个区域,信号会被阻挡。
图5:天线高度对损耗的影响
- 左图:天线高度从 5 m 增到 100 m,损耗从约 130 dB 降到约 110 dB;
- 右图 :对数坐标下,损耗与 h t h_t ht 成线性关系 ------验证了 L ∝ 1 / ( h t h r ) L \propto 1/(h_t h_r) L∝1/(hthr)。
图6:三种模型综合对比
- 上图:自由空间(蓝虚线)、双射线(红点线)、组合模型(黑实线);
- 下图 :菲涅尔区半径随距离增长------距离越远,需要的净空越大。
六、工程实战的四条准则
| 准则 | 数学依据 | 工程做法 |
|---|---|---|
| 1. 远距离用双射线模型 | L ∝ R 4 / ( h t h r ) 2 L \propto R^4/(h_t h_r)^2 L∝R4/(hthr)2 | 地面雷达/通信链路必用 |
| 2. 天线越高越好 | 损耗 ∝ 1 / ( h t h r ) \propto 1/(h_t h_r) ∝1/(hthr) | 尽可能增高,但受场地限制 |
| 3. 菲涅尔区必须净空 60% | 60% 以内损耗 < 1 dB | 微波链路规划必查 |
| 4. 干涉零点要避开 | R n u l l = 2 h t h r / ( n λ ) R_{null} = 2h_t h_r/(n\lambda) Rnull=2hthr/(nλ) | 多频/多站冗余 |
七、延伸思考
7.1 双射线模型的"精确 vs 近似"
本代码同时用了精确模型 (复振幅叠加)和简化模型 ( L = R 4 / ( h t h r ) 2 L = R^4/(h_t h_r)^2 L=R4/(hthr)2)。
简化模型的适用条件 : R ≫ h t , h r R \gg h_t, h_r R≫ht,hr,且 Δ R ≪ λ \Delta R \ll \lambda ΔR≪λ。
不适用场景:
- 近距离( R < R b r e a k R < R_{break} R<Rbreak):简化为负损耗(物理上不可能);
- 毫米波( λ \lambda λ 很小):干涉图案极其密集,简化模型误差大。
7.2 多径效应在电子战中的影响
双射线模型是两径 ,真实环境可能有多径(建筑反射、山体反射)。这会导致:
- 测向误差:AOA测向接收到的方向不再是"直射方向";
- TDOA模糊:多径延迟可能被误判为"另一个目标";
- 衰落:信号强度随位置剧烈波动。
工程对策:
- 空间分集:多个天线间距 > λ/2,独立衰落;
- 频率分集:多个频点,独立衰落;
- RAKE接收:主动利用多径能量(CDMA系统)。
7.3 与后续篇章的关系
本篇讲的是路径损耗 ------信号"弱"了多少。第26篇我们将讲大气衰减 ------信号在传播途中被吸收了多少。两者的区别:
- 路径损耗:几何效应,与距离、天线高度有关;
- 大气衰减:物理效应,与频率、大气成分有关。
两者叠加才是总传播损耗。敬请期待!
下一篇预告(第26篇):大气衰减------氧气与水汽吸收
信号穿过大气层时,会被氧气和水汽分子吸收 ------能量转化为分子振动/转动,信号变弱。
这种吸收有强烈的频率选择性:
- 60 GHz :氧气吸收峰,衰减高达 15 dB/km------保密通信的天然屏障;
- 22 GHz:水汽吸收峰,衰减约 0.2 dB/km;
- 毫米波:雨衰 + 氧衰,总衰减可达几十 dB/km。
我们将会:
- 推导氧气/水汽吸收系数的物理模型;
- 用 MATLAB 画出1~350 GHz 的衰减谱------看清吸收峰的位置;
- 分析海拔高度对衰减的影响------高空干燥,衰减小;
- 复现原书附录 C(图C.2、C.5)。
敬请期待!