tb_fmcw_window_apply — 2D typed op

資料種類:beatcubebeatcube

呼叫:fullseye.apply(img, "tb_fmcw_window_apply", a=0.5, b=0.5)(2-D 的模型是一張圖 + 兩個純量旋鈕 a,b∈[0,1])

*無圖: 該運算子以 beatcube 為輸入。從影像開始的 Studio 程式無法到達該型別,請參見下方的可執行範例。*

用法

沿差頻立方體的距離和/或都卜勒軸套用週期性窗函數。

> 以下的詳細說明為原文 —— 摘要與標題已翻譯。

The sidelobes of a rectangular (unwindowed) transform are -13.3 dB, so a

strong target buries a weak one 20 dB down at a completely different range.

Windowing trades main-lobe width for sidelobe level; the published figures

(Harris 1978, Table 1) and the levels measured in this repository on a

single bin-centred target are:

========== ============== ============== ==================

window published PSL measured PSL measured -3 dB lobe

========== ============== ============== ==================

rect -13.3 dB -13.25 dB 0.885 bin

hann -31.5 dB -31.47 dB 1.438 bin

hamming -42.7 dB -42.45 dB 1.301 bin

blackman -58.1 dB -58.11 dB 1.641 bin

========== ============== ============== ==================

Measured by transforming each window on its own with 2^18-point zero padding

and taking the highest lobe past the first null — that *is* the definition of

peak sidelobe level, so these are the module's own numbers, not copied ones.

Hamming lands 0.25 dB off the published figure because the published one is

for the optimal 0.53836/0.46164 pair; the 0.54/0.46 coefficients written here

are the textbook ones and this is what they actually give.

What it buys, measured end to end: a target 45 dB below a strong one, seven

range bins away, is undetectable unwindowed (its cell sits 24.6 dB down

in the leakage skirt and is not even a local maximum) and becomes a clean

local maximum at -43.6 dB with `hann`. That comparison is step 4 of

`examples/fmcw_range_doppler.py`.

*axis* is named by role — `"range"` (fast time, the last axis),

`"doppler" (slow time, the middle axis) or "both"` — never by number,

because a transposed cube is the mistake this naming is defending against.

The window is *not* folded into :func:range_doppler_map: keeping it a

separate op is what lets the sidelobe table above be measured as a

difference, and keeps the transform op a pure 2-D FFT.

Returns a new complex cube of the same shape. Raises `ValueError` on a

real-valued or malformed cube, or an unknown *window* / *axis*.

Typed bridge of the rangedoppler op `fmcw_window_apply into the 2-D evolution registry: the same implementation, called under the op(v, a, b) convention. This op has no tunable parameter; a and b` are unused.

參考(範例資料・文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• (尚無)

型別可銜接的下一個運算子(可接受 beatcube 作為輸入)

identity · tb_range_doppler_map · tb_fmcw_range_profile · tb_beamform_delay_sum

同類別(typed)

tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_angle_3points · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal


*Provenance: ops.py — 2D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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