如何计算低频通信的可靠性
本例模拟卫星通信系统的关键参数,计算两个重要指标:通信线路的预算和信号检测的概率。 按照此代码的步骤,您将能够:
*计算轨道上的信号损失,考虑到几何形状(倾斜范围,无线电地平线),大气和衰落。
*评估接收机输入端的信噪比(SNR)。
*实际预测噪声条件下成功接收信号的概率,这是任何真实通信和雷达系统的基础。
这个例子是一个很好的实践说明这样的基本主题,如弗里斯方程,雷达方程和信号检测理论。
详细代码分析
1. 地球的几何与大气折射
R_earth = 6371.0-使用地球的平均半径(≈6371km),卫星计算中的标准值。R_equiv = 8500.0-介绍了地球的有效半径(4/3 R_earth)≈8,500公里。 标准大气中的折射校正(ITU-R P.310-9)对于估计无线电波传播路径的曲率至关重要。D_horizon使用勾股定理计算:√((R+h)² - R²)-与地球周长相切的线段长度的精确几何表达式来自高度为h的点。D_slant-根据余弦定理的倾斜范围:√(R₁² + R₂² - 2·R₁·R₂·cos θ₀)-以下损失计算的关键参数。
using SpecialFunctions
R_earth = 6371.0
R_equiv = 8500.0
f_MHz = 49.0
P_tx_W = 100.0
Δf_MHz = 0.025
Δf_Hz = Δf_MHz * 1e6
φN = 0.965167; λN = 1.448623; ΔhN0 = 0.162; h_ant_tx = 0.016; h_tx = ΔhN0 + h_ant_tx
φM = 0.0; λM = 1.666789; ΔhM = 0.0
G_tx_dBi = 22.0
G_rx_dBi = 35.0
NF_dB = 3.0
pfa = 1e-5
T0 = 290.0
θ0 = 0.981489
h_rx = 36423.578;
D_surface = R_earth * θ0
println("Дальность по поверхности Земли: $(round(D_surface, digits=1)) км")
D_horizon_rx = sqrt((R_equiv + h_rx)^2 - R_equiv^2)
D_horizon_tx = sqrt((R_equiv + h_tx)^2 - R_equiv^2)
D_radio_vis = D_horizon_rx + D_horizon_tx
println("Дальность прямой радиовидимости: $(round(D_radio_vis, digits=1)) км")
R_tx = R_earth + h_tx
R_rx = R_earth + h_rx
D_slant = sqrt(R_tx^2 + R_rx^2 - 2*R_tx*R_rx*cos(θ0))
println("Наклонная дальность: $(round(D_slant, digits=1)) км")
2. 链路预算的计算
*自由空间路径损耗(FSPL): L_fs = 32.45 + 20·log10(D_slant) + 20·log10(f_MHz) -在工程中广泛使用的弗里斯方程形式。 常数为32.45at D_slant [км] 和 f_MHz -所有后续计算的参考依据(ITU-R P.525)。
*总损失:模型包括 L_atm, L_rain, L_fading, L_pol.
*接收器输入功率:基本功率平衡方程: P_rx = P_tx + G_tx + G_rx - L_total.
*热噪声功率:使用奈奎斯特公式计算: N = 10·log10(k·T0·Δf) 用玻尔兹曼常数k=1.38·10-23J/K。 NF (以dB为单位)给出了接收机输出噪声的全部功率。
*SNR:对应于预算计算的结果。
L_fs = 32.45 + 20*log10(D_slant) + 20*log10(f_MHz)
println("Ослабление в свободном пространстве: $(round(L_fs, digits=2)) дБ")
L_atm = 0.02
L_rain = 0.0
L_fading = 3.0
L_pol = 3.0
L_add = L_atm + L_rain
L_total = L_fs + L_add + L_fading + L_pol
println("Атмосферные/дождевые потери: $(round(L_add, digits=2)) дБ")
println("Запас на замирания (Fading): $(L_fading) дБ")
println("Поляризационные потери: $(L_pol) дБ")
println("Полные потери (L_total): $(round(L_total, digits=2)) дБ")
P_tx_dBW = 10*log10(P_tx_W)
P_rx_dBW = P_tx_dBW + G_tx_dBi + G_rx_dBi - L_total
println("Мощность на входе приёмника: $(round(P_rx_dBW, digits=2)) дБВт")
N_thermal_dBW_Hz = 10*log10(1.38e-23 * T0)
N_total_dBW = N_thermal_dBW_Hz + NF_dB + 10*log10(Δf_Hz)
println("Мощность теплового шума: $(round(N_total_dBW, digits=2)) дБВт")
T_sys = T0 * 10^(NF_dB / 10)
G_over_T = G_rx_dBi - 10*log10(T_sys)
println("Системная шумовая температура T_sys: $(round(T_sys, digits=1)) К")
println("Отношение усиления к шуму G/T: $(round(G_over_T, digits=2)) дБ/К")
SNR_dB = P_rx_dBW - N_total_dBW
SNR_lin = 10^(SNR_dB / 10)
println("SNR: $(round(SNR_dB, digits=2)) дБ (линейное: $(round(SNR_lin, digits=2)))")
3. 噪声中的信号检测分析(检测理论)
3.1. 基于给定虚警概率(P_fa)计算检测阈值
门阶 Q_fa 它是使用公式设置的: Q_fa = √(-2·ln(P_fa)). 这是正态分布尾部积分的精确解决方案,这是使用Neiman-Pearson准则计算高斯噪声中检测信号的阈值的标准方法。 由 P_fa = 10⁻⁵ 我们得到了门槛 Q_fa ≈ 4,7985 -没错
3.2. 计算正确检测的概率(P_d)
使用Marcum Q函数计算高斯噪声中非波动(Swerling0)信号的检测概率,该函数减少为附加误差函数erfc: P_d = 0,5·erfc( (Q_fa - √(2·SNR_lin)) / √2 ). 这种方法是建模"硬"解决方案("信号存在/不存在")的基本方法,并在经典文献(Skolnik,Van Trees)中有所描述。
Q_fa = sqrt(-2 * log(pfa))
arg = (Q_fa - sqrt(2 * SNR_lin)) / sqrt(2)
P_d = clamp(0.5 * erfc(arg), 0.0, 1.0)
println("Порог Q_fa: $(round(Q_fa, digits=4))")
println("Вероятность обнаружения P_d: $(round(P_d, digits=6))")
f2_MHz = 50.0
L_fs2 = 32.45 + 20*log10(D_slant) + 20*log10(f2_MHz)
L_total2 = L_fs2 + L_add + L_fading + L_pol
P_rx_dBW2 = P_tx_dBW + G_tx_dBi + G_rx_dBi - L_total2
SNR_dB2 = P_rx_dBW2 - N_total_dBW
SNR_lin2 = 10^(SNR_dB2 / 10)
arg2 = (Q_fa - sqrt(2 * SNR_lin2)) / sqrt(2)
P_d2 = clamp(0.5 * erfc(arg2), 0.0, 1.0)
println("\nРезультаты для частоты $(f2_MHz) МГц")
println("SNR: $(round(SNR_dB2, digits=2)) дБ")
println("Вероятность обнаружения: $(round(P_d2, digits=6))")
println("\nЗАКЛЮЧЕНИЕ")
if P_d > 0.999
println("信号稳定,P_d<1.0")
elseif P_d > 0.9
println("Сигнал стабилен, P_d = $(round(P_d, digits=3))")
else
println("Вероятность обнаружения недостаточна: P_d = $(round(P_d, digits=3))")
end
println("Полные потери: $(round(L_total, digits=2)) дБ")
println("Шумы: $(round(N_total_dBW, digits=2)) дБВт")
println("理论:链路预算(ITU-R),检测理论(Skolnik,Van Trees)")
results = Dict(
"SNR_dB" => round(SNR_dB, digits=2),
"P_d" => P_d,
"P_rx_dBW" => round(P_rx_dBW, digits=2),
"L_total" => round(L_total, digits=2),
"G_over_T_dB_per_K" => round(G_over_T, digits=2),
"Frequency_MHz" => f_MHz
)
println("\nСтруктурированные результаты: ", results)
结论
在这个例子中,我们已经实施了一个严格的科学方法来评估一个真正的沟通渠道。:
*计算路线的几何形状,考虑到地球的球形度和折射。
*根据Friis-ITU模型的线路的全部能源预算(链路预算)。
*在噪声(热力学+噪声系数)的接收质量的评估。
*基于概率模型(检测的统计理论)的通信可靠性的数学正确预测。
*检查系统对频率变化(50MHz)的灵敏度。
该代码演示了无线电工程和通信理论的经典公式如何转化为计算系统可靠性的工作工具。 它可以作为更复杂模型的基础,包括干扰、调制类型和编码的影响。