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"))

사용법

거리-도플러 맵으로부터의 검출: 빈 인덱스를 m 와 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 패밀리 가이드

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL 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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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