nearlink_sdr.phy.channel¶
TXS-10002-2025 信道模型: AWGN / Rayleigh / Rician / 多径频率选择性衰落 / Doppler 时变 / 多用户干扰。
SparkLink SLE 工作于 2.4 GHz ISM 频段,典型场景为室内短距通信。 参考 IEEE 802.15.4 / ITU-R P.1238 室内信道参数:
RMS 时延扩展: 10 ~ 50 ns
Rician K 因子: 3 ~ 10 dB (视距)
最大多普勒频移: < 50 Hz (行人速度)
Doppler 时变信道采用 Jakes 求和正弦模型, 生成具有经典 U 形功率谱密度的 时间相关衰落序列, 自相关函数为 J₀(2π·f_d·Δt)。
多用户干扰模型支持同信道干扰和邻信道干扰, 基于 TXS-10002-2025 标准 第 8.3.2 条接收机选择性要求。
Module Contents¶
Classes¶
信道配置参数。 |
|
多模信道模型,支持 AWGN / 平坦衰落 / 频率选择性衰落。 |
|
干扰源配置。 |
Functions¶
向信号叠加多个干扰源。 |
|
计算 SINR (dB)。 |
Data¶
API¶
- nearlink_sdr.phy.channel.PDP_2TAP¶
[(0, 0.0), (1,)]
- nearlink_sdr.phy.channel.PDP_INDOOR_OFFICE¶
[(0, 0.0), (1,), (2,), (3,), (4,), (5,)]
- class nearlink_sdr.phy.channel.ChannelConfig[源代码]¶
信道配置参数。
- 变量:
snr_db -- 信噪比 (dB)。
channel_type -- "awgn" | "rayleigh" | "rician" | "multipath"。
rician_k_db -- Rician K 因子 (dB), 仅 "rician" 模式使用。
pdp -- 功率时延谱 [(delay_samples, power_dB), ...], 仅 "multipath" 使用。
max_doppler_hz -- 最大多普勒频移 (Hz)。0 表示准静态。
symbol_rate_hz -- 符号速率 (Hz), 用于计算归一化 Doppler 频移。
n_sinusoids -- Jakes 模型正弦分量数, 值越大频谱越精确。
seed -- 随机种子。
- class nearlink_sdr.phy.channel.ChannelModel(snr_db: float = 10.0, config: nearlink_sdr.phy.channel.ChannelConfig | None = None)[源代码]¶
多模信道模型,支持 AWGN / 平坦衰落 / 频率选择性衰落。
Initialization
- apply_awgn(signal: numpy.ndarray) numpy.ndarray[源代码]¶
仅加 AWGN 噪声 (保持向后兼容)。
- apply_fading(signal: numpy.ndarray) numpy.ndarray[源代码]¶
按 config 类型应用衰落 + AWGN, 同时缓存信道系数到 last_taps。
- property last_taps: numpy.ndarray | None¶
上一次 apply_fading 使用的信道系数, 供均衡器使用。
- get_channel_taps(n_symbols: int) numpy.ndarray[源代码]¶
返回信道抽头系数矩阵 (n_taps × n_symbols), 用于均衡器。
对于平坦衰落: 返回 (1, n_symbols)。 对于多径: 返回 (max_delay+1, n_symbols)。
- doppler_autocorrelation(n: int, max_lag: int = 64) numpy.ndarray[源代码]¶
计算 Jakes 衰落序列的归一化自相关函数, 用于验证 J₀ 特性。
返回长度为 max_lag 的实数数组, r[k] = Re{E[h(n)·h*(n+k)]} / E[|h|²]。
- theoretical_autocorrelation(max_lag: int = 64) numpy.ndarray[源代码]¶
理论自相关函数 J₀(2π·f_d·k/f_s), 供对比验证。
- class nearlink_sdr.phy.channel.InterferenceConfig[源代码]¶
干扰源配置。
- 变量:
sir_db -- 信号与干扰功率比 (dB), 即 S/I。
freq_offset_hz -- 干扰信号中心频率相对有用信号的偏移 (Hz)。 0 表示同信道干扰。
interferer_bw_hz -- 干扰信号带宽 (Hz), 用于频谱成型。 0 表示与有用信号相同带宽 (不做滤波)。
seed -- 随机种子。
- nearlink_sdr.phy.channel.add_interference(signal: numpy.ndarray, interferers: list[nearlink_sdr.phy.channel.InterferenceConfig], sample_rate_hz: float = 1000000.0, rng: numpy.random.Generator | None = None) numpy.ndarray[源代码]¶
向信号叠加多个干扰源。
每个干扰源独立生成与有用信号等长的随机 IQ 序列, 按 SIR 缩放后叠加。 支持同信道和邻信道干扰 (通过频率偏移实现)。
- 参数:
signal -- 有用信号 (复数 IQ)。
interferers -- 干扰源配置列表。
sample_rate_hz -- 采样率 (Hz)。
rng -- 可选随机数生成器。
- 返回:
叠加干扰后的信号。
- nearlink_sdr.phy.channel.compute_sinr(signal: numpy.ndarray, noise_signal: numpy.ndarray, interference_signal: numpy.ndarray) float[源代码]¶
计算 SINR (dB)。
- 参数:
signal -- 纯净有用信号。
noise_signal -- 含噪声的接收信号 (信号+噪声, 不含干扰)。
interference_signal -- 干扰叠加后的接收信号 (信号+噪声+干扰)。
- 返回:
SINR (dB)。