range_doppler_peaks — RANGEDOPPLER process op

数据种类:image2dtable

调用:import rangedoppler; rangedoppler.range_doppler_peaks(rdmap, range_bin_m=1.0, velocity_bin_ms=1.0, n_peaks=1, min_fraction=0.1, doppler_shifted=True)(或 opsrangedoppler.get("range_doppler_peaks"))

用法

由距离-多普勒图得到检测:把 bin 索引换回米与 m/s。

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

Finds strict local maxima of the 2-D magnitude map — greater than all eight

neighbours, cyclically along the Doppler axis (velocity really is

periodic in the FFT: the fastest receding bin is adjacent to the fastest

approaching one) and openly along the range axis (a cell in the first or

last range bin competes only against the neighbours that exist, so a target

in the last bin is a detection, not a discard) — keeps those at least

*min_fraction* of the global maximum, and returns the strongest *n_peaks*.

Range bin 0 is reported like any other. In a real receiver it is the

transmitter-leakage / DC bin rather than a target, but suppressing it here

would be a silent policy applied to somebody else's data; threshold it

yourself if you want it gone.

Index -> physical value, closed form and the exact inverse of

:func:fmcw_beat_simulate:

• `range_m = j * range_bin_m, with range_bin_m = c*f_s/(2*S*N_s)`

from :func:fmcw_design;

• `velocity_ms = (i - n_doppler//2) * velocity_bin_ms` when

*doppler_shifted* (the layout :func:range_doppler_map produces), or

`i wrapped into [-N_c/2, N_c/2)` when the map is unshifted.

The bin widths are required parameters with placeholder defaults of 1.0,

which means the default output is in bins, not metres. That is deliberate:

inventing a default waveform here would let a caller read metres off a map

that was never that waveform's.

Returns a `dict with peaks` (a list of per-detection dicts holding

`range_m, velocity_ms, magnitude, range_bin, doppler_bin`),

`n_found, max_magnitude and noise_floor` (the median of the map).

Raises `ValueError`: a non-2-D, complex, negative, or non-finite map; a

map whose maximum is 0 (an all-zero map has no cell to detect and returning

cell (0,0) — which is what `argmax` does — would be a fabricated

detection); a non-positive bin width; *n_peaks* < 1; a *min_fraction*

outside `[0, 1]`.

详细使用指南

fmcw_range_doppler 族使用指南

参考(示例数据・文献)

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

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

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

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

fmcw_range_dopplerpy -3.11 examples/fmcw_range_doppler.py

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

同类别(process)

fmcw_window_apply · range_doppler_map · fmcw_range_profile


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

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