79 lines
3.5 KiB
Rust
79 lines
3.5 KiB
Rust
//! Interference and carrier-to-interference computation.
|
|
//!
|
|
//! A wanted signal rarely arrives alone. This crate combines the wanted
|
|
//! carrier with one or more interfering carriers and with noise, and reports
|
|
//! the ratios that decide whether the wanted link is usable.
|
|
//!
|
|
//! The figures computed here are:
|
|
//!
|
|
//! - The carrier to interference ratio, over one interferer or several.
|
|
//! - The carrier to noise plus interference ratio, which is what a receiver
|
|
//! actually sees, because it cannot separate the two.
|
|
//! - The equivalent noise temperature of an interferer, which lets an
|
|
//! interference contribution be folded into the link budget as if it were
|
|
//! noise.
|
|
//!
|
|
//! Interference from a second satellite sharing the same frequency is
|
|
//! described by the angle between the two satellites as seen from the ground
|
|
//! station. The receive antenna has a sidelobe response in that direction,
|
|
//! and the ratio of the interferer's power to the wanted power follows from
|
|
//! the two gains and the two path losses. This crate takes the two gains as
|
|
//! inputs, so it composes with the pattern models in `apsis-antenna`.
|
|
//!
|
|
//! Source: the definitions of carrier to interference and carrier to noise
|
|
//! plus interference, and the practice of expressing interference as an
|
|
//! equivalent noise temperature, are standard in satellite link design and
|
|
//! appear for example in the ITU-R Handbook on Satellite Communications.
|
|
//!
|
|
//! ```
|
|
//! use apsis_interference::{Interferer, carrier_to_interference, combine};
|
|
//! use apsis_rf::{Decibel, Power};
|
|
//!
|
|
//! let wanted = Power::from_dbw(-130.0).expect("finite");
|
|
//! let interferer = Interferer {
|
|
//! power: Power::from_dbw(-140.0).expect("finite"),
|
|
//! };
|
|
//!
|
|
//! // One interferer ten decibels below the carrier leaves a C/I of 10 dB.
|
|
//! let ratio = carrier_to_interference(wanted, &[interferer]).expect("valid");
|
|
//! assert!((ratio.db() - 10.0).abs() < 1e-9);
|
|
//!
|
|
//! // Combining with noise can only lower the result.
|
|
//! let combined = combine(ratio, Decibel::from_db(15.0)).expect("valid");
|
|
//! assert!(combined.db() < ratio.db());
|
|
//! ```
|
|
//!
|
|
//! 干扰与载干比计算。
|
|
//!
|
|
//! 有用信号很少独自到达。本 crate 把有用载波与一个或多个干扰载波以及噪声
|
|
//! 合并,并报告决定该有用链路是否可用的各比值。
|
|
//!
|
|
//! 此处计算的数字是:
|
|
//!
|
|
//! - 载干比,对一个或若干干扰源。
|
|
//! - 载波与噪声加干扰之比,这是接收机实际所见,因为它无法把二者分开。
|
|
//! - 某干扰源的等效噪声温度,它使干扰贡献可以像噪声一样折算进链路预算。
|
|
//!
|
|
//! 来自共享同一频率的第二颗卫星的干扰,由自地面站看两颗卫星之间的角描述。
|
|
//! 接收天线在该方向上有旁瓣响应,而干扰源功率与有用功率之比由两个增益与
|
|
//! 两个路径损耗得出。本 crate 把两个增益作为输入,故它与 `apsis-antenna`
|
|
//! 中的方向图模型可组合。
|
|
//!
|
|
//! 出处:载干比与载波噪声加干扰比的定义,以及把干扰表达为等效噪声温度的
|
|
//! 做法,都是卫星链路设计中的标准内容,例如见于 ITU-R Handbook on Satellite
|
|
//! Communications。
|
|
|
|
#![forbid(unsafe_code)]
|
|
#![deny(missing_docs)]
|
|
|
|
mod ratio;
|
|
|
|
pub use ratio::{
|
|
InterferenceSummary, Interferer, carrier_to_interference, carrier_to_interference_single,
|
|
carrier_to_noise_plus_interference, combine, equivalent_noise_temperature,
|
|
interference_to_noise_ratio, summarise, total_interference,
|
|
};
|
|
|
|
pub use apsis_core::constant::BOLTZMANN;
|
|
pub use apsis_rf::{Decibel, Power};
|