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.