fmcw_beat_simulate — RANGEDOPPLER simulate op

• 数据种类:无 → beatcube(仅由参数决定的算子 —— 不接受图像或数据输入)

• 调用: import fullseye as fs; fs.ledger.fmcw_beat_simulate(ranges_m=(10.0,), velocities_ms=(0.0,), angles_deg=None, amplitudes=None, n_samples=64, n_chirps=32, n_antennas=1, sample_rate_hz=10000000.0, slope_hz_per_s=20000000000000.0, chirp_period_s=5e-05, wavelength_m=0.0038934, element_spacing_m=None, phase_deg=0.0, noise_sigma=0.0, seed=0)(要直接调用实现,import rangedoppler; rangedoppler.fmcw_beat_simulate(ranges_m=(10.0,), velocities_ms=(0.0,), angles_deg=None, amplitudes=None, n_samples=64, n_chirps=32, n_antennas=1, sample_rate_hz=10000000.0, slope_hz_per_s=20000000000000.0, chirp_period_s=5e-05, wavelength_m=0.0038934, element_spacing_m=None, phase_deg=0.0, noise_sigma=0.0, seed=0);从台账取用则 opsrangedoppler.get("fmcw_beat_simulate"))

用法

为已知目标合成复数 (A, C, S) 拍频立方体。

> 以下的详细说明为原文 —— 摘要与标题已翻译。

The forward model. Every target t contributes

a_t * exp(1j*(2*pi*f_b_t*n/f_s + 2*pi*f_d_t*m*T_c + 2*pi*d*k*sin(th_t)/lam + phi))

over fast-time sample n, chirp m and antenna k, with f_b = 2*S*R/c and f_d = 2*v/lambda. Contributions add linearly, which is what makes a multi-target cube a valid ground truth: each target's peak stands at its own bin regardless of the others.

Sign conventions (see the module docstring): velocities_ms is dR/dt, so positive is receding and lands in a positive Doppler bin; angles_deg is measured from array boresight and a positive angle advances the phase of the higher-index elements.

*amplitudes* defaults to 1.0 for every target — there is no radar equation here, no 1/R^4, no propagation loss (module docstring, honest limits). *noise_sigma* adds circular complex Gaussian noise with that per-component standard deviation, drawn from numpy.random.default_rng(seed); the default 0.0 returns the exact noiseless cube, which is what the closed-form tests compare against.

Ground truth: a target placed at an exact bin centre — R = j*dR and v = i*dv from fmcw_design — puts the whole of its energy in bin (i, j) of range_doppler_map, whose peak magnitude is then exactly a * N_s * N_c. Measured on the default configuration: the peak magnitude is bit-exactly 2048.0 (N_s*N_c, relative error 0.0), the largest other cell in the map is 2.6e-16 of it, and with three targets at different bins and different amplitudes the recovered ranges and velocities are exact to 0.0 metres and 0.0 m/s with amplitudes within 5.6e-17. See tests/test_rangedoppler.py.

Raises ValueError: a range at or beyond c*f_s/(2S), a speed at or beyond lambda/(4*T_c), an angle at or beyond asin(lambda/(2d)) — the three aliasing limits, refused rather than folded silently; a non-positive range; mismatched target-list lengths; a cube over MAX_CUBE_ELEMENTS (checked *before* allocation); a negative amplitude or noise sigma; a non-integer seed; and the usual string/bool/complex/NaN scalar refusals.

详细使用指南

• fmcw_range_doppler 族使用指南

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• fmcw_range_doppler — py -3.11 examples/fmcw_range_doppler.py

类型可衔接的下一个算子(可接受 beatcube 作为输入)

fmcw_window_apply · range_doppler_map · fmcw_range_profile · beamform_delay_sum · beamform_doa

同类别(simulate)

—


*Provenance: rangedoppler.py — RANGEDOPPLER 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.