Why Your Radar Spectrogram Looks Wrong: Choosing STFT Parameters for Micro-Doppler

Comparison of short, balanced and long STFT windows applied to a radar micro-Doppler signal.

The correct STFT settings are determined mainly by the motion timescale you need to preserve and the Doppler separation you need to resolve. Window length controls the fundamental time–frequency compromise. Overlap controls how often the spectrum is updated. FFT length controls the spacing of the displayed frequency samples, but zero-padding does not create new physical Doppler resolution. The pulse or chirp repetition frequency sets the available slow-time Doppler band.

That distinction explains many disappointing radar spectrograms. A short window can follow a rapid gesture but broadens Doppler components. A long window can separate nearby Doppler frequencies but smears a fall, limb reversal or rotor flash across time. A large FFT can make either image look smoother without recovering information lost through the chosen window.

This guide develops the relationships from the STFT equation, connects them to radar velocity, and turns them into a practical parameter-selection procedure. The examples assume coherent monostatic radar and complex slow-time samples. The same principles apply to pulsed Doppler and FMCW systems, provided the correct slow-time sampling rate is used.

Why micro-Doppler needs time–frequency analysis

An ordinary Fourier transform reports which frequencies are present over an observation interval, but not when they occur. That is insufficient for many radar targets because their Doppler content changes continuously.

For a walking person, bulk torso motion produces a comparatively strong Doppler component, while swinging arms and legs create faster, time-varying components around it. Rotating blades, vibrating structures and other micro-motions generate related modulations. Chen, Li, Ho and Wechsler showed that these micro-motions impose time-varying frequency or phase modulation on the radar return and demonstrated STFT-based analysis on measured radar data [1].

The squared magnitude of the STFT is the spectrogram. It is popular because it is simple, interpretable and computationally manageable. Its central limitation is equally important: a fixed window cannot provide arbitrarily fine time and frequency resolution simultaneously. Larger windows improve frequency discrimination but reduce temporal localization [1].

That trade-off is not a plotting defect. It is part of the measurement representation.

If you first need the physical meaning of the torso ridge and limb excursions, read Micro-Doppler Explained: How Radar Sees Arms, Legs, and Human Motion. The present guide focuses on calculating and tuning that time–frequency representation.

If you are new to the full processing chain, first read our guide to radar-based human activity recognition. The present article focuses specifically on the slow-time STFT stage.

Start with the correct radar signal

Before selecting an STFT window, identify what sequence the transform will analyze.

In an FMCW radar, the ADC samples collected within each chirp form the fast-time dimension. A range FFT converts those samples into range bins. The complex value from one range bin, observed across consecutive chirps, forms a slow-time sequence:

x_r[n], \qquad n=0,1,\ldots,N-1,

where rr is the selected range bin and nn is the chirp or pulse index. Micro-Doppler analysis normally applies the STFT along this slow-time dimension—not directly along the fast-time ADC samples.

A typical preprocessing chain is:

  1. Calibrate the channels if calibration is required.
  2. Perform the range FFT for every chirp.
  3. Suppress stationary clutter or estimate and remove the slow-time mean.
  4. Detect or track the target’s range region.
  5. Preserve the complex slow-time samples.
  6. Apply the STFT along slow time.
  7. Combine information across selected range bins in a declared and reproducible way.

Do not take the magnitude of each complex slow-time sample before computing Doppler unless you deliberately want an envelope-based representation. Premature magnitude detection discards coherent phase evolution, which carries Doppler information and its sign. Chen et al. specifically note that coherent processing is required to track phase changes caused by micro-motion [1].

One range bin or several?

A single range bin is easy to interpret but may lose energy when the target migrates. Combining several bins is more robust, but the method matters:

  • Power-domain combination: calculate a spectrogram for each selected range bin and sum the powers. This avoids phase cancellation between bins.
  • Coherent complex combination: align phases before summing complex signals. This can preserve coherent gain but is sensitive to alignment.
  • Target-track extraction: follow the target’s range trajectory and extract the complex value along that track.

State which method you use. Two papers can employ the same STFT parameters yet produce different-looking micro-Doppler signatures because their range-bin aggregation differs.

The STFT equation and the four parameters that matter

For a discrete complex slow-time signal x[n]x[n], an STFT can be written as

X[m,k]
=
\sum_{n=-\infty}^{\infty}
x[n]\,w[n-mH]\,
e^{-j2\pi kn/N_{\mathrm{FFT}}}

where:

  • w[n]w[n] is the analysis window;
  • NwN_w is the window length in samples;
  • HH is the hop size between successive windows;
  • NFFTN_{\mathrm{FFT}} is the FFT length;
  • mm indexes time frames; and
  • kk indexes Doppler-frequency samples.

The displayed spectrogram is commonly

P[m,k]=|X[m,k]|^2,

usually converted to decibels. Using 10log10P10\log_{10}P and using 20log10|X|20\log_{10}|X| are equivalent when the reference and normalization are consistent. MATLAB also defines the spectrogram as the magnitude squared of the STFT [2], as does SciPy’s current ShortTimeFFT documentation [3].

Four choices shape the result: slow-time sampling rate, window duration and shape, overlap, and FFT length.

1. PRF sets the slow-time Doppler band

Let the effective slow-time sampling frequency be

f_{s,\mathrm{slow}}=\mathrm{PRF}_{\mathrm{eff}}.

For uniformly sampled complex slow-time data, the basic Doppler interval is

-\frac{\mathrm{PRF}_{\mathrm{eff}}}{2}
\leq f_D <
\frac{\mathrm{PRF}_{\mathrm{eff}}}{2}.

For a monostatic radar, Doppler frequency and radial velocity are related by

f_D=\frac{2v_r}{\lambda},
\qquad
v_r=\frac{\lambda f_D}{2},

where λ=c/fc\lambda=c/f_c is the wavelength and vrv_r is radial velocity. The corresponding basic unambiguous velocity interval is approximately

-\frac{\lambda\,\mathrm{PRF}_{\mathrm{eff}}}{4}
\leq v_r <
\frac{\lambda\,\mathrm{PRF}_{\mathrm{eff}}}{4}

This is the first check to make. If the expected limb, blade-tip or vibration-induced Doppler exceeds the slow-time Nyquist interval, changing the STFT window will not repair the aliasing. The acquisition timing must change, or a suitable ambiguity-resolution method must be used.

Texas Instruments’ FMCW parameter guide likewise connects maximum unambiguous velocity to chirp cycle time and velocity resolution to the number of coherently processed chirps and the frame duration [4].

The TDM-MIMO trap

In a time-division multiplexed MIMO sequence, a given transmitter may be active only once every MM chirps. In that common arrangement, the effective slow-time sampling rate for one transmitter–receiver channel is often the chirp repetition rate divided by M:

\mathrm{PRF}_{\mathrm{eff}}
=
\frac{\mathrm{PRF}_{\mathrm{chirp}}}{M}

The exact value depends on the transmitted sequence. Derive it from the time spacing between samples belonging to the same virtual channel. Using the aggregate chirp rate without accounting for interleaving stretches the Doppler and velocity axes by the wrong factor.

2. Window length controls the central resolution trade-off

The window duration is

T_w=\frac{N_w}{\mathrm{PRF}_{\mathrm{eff}}}.

A useful first-order frequency scale is

\Delta f_{\mathrm{window}}\sim\frac{1}{T_w}.

This is an order-of-magnitude relationship, not an exact resolution guarantee. The window’s main-lobe width, the SNR, the separation and relative strength of components, and the estimator used to locate ridges all affect whether two components can actually be distinguished.

The corresponding velocity scale is

\Delta v_{\mathrm{window}}
\sim
\frac{\lambda}{2T_w}

Increasing TwT_w therefore improves the ability to discriminate nearby, nearly stationary Doppler components. But the STFT now assumes the signal is locally stable over a longer interval. If a limb reverses direction or a person falls within that window, energy from multiple motion states is blended into one spectrum.

Plots showing how nominal Doppler and radial-velocity scales decrease as STFT window duration increases.
Figure 1. Longer windows provide a finer first-order Doppler and velocity scale but reduce temporal localization. Actual resolution also depends on window shape, SNR and the estimator.

What short and long windows do

Window choiceWhat improvesWhat degradesTypical visual symptom
ShortTiming of rapid changesSeparation of nearby Doppler componentsThick or fuzzy frequency ridges
LongDoppler discrimination and weak-tone detectabilityTiming of transitions and reversalsSmooth but temporally smeared motion
IntermediateBalanced representationNeither extreme is maximizedUsually the best starting point for general HAR

There is no universally correct duration for “micro-Doppler.” A rotor, hand gesture, gait cycle and breathing motion operate on different timescales. Recent work on activity-dependent radar representations continues to identify fixed STFT resolution as a limitation when different activities occupy different time–frequency scales [5].

3. Window shape trades leakage against main-lobe width

Window length is not the whole story. The shape of w[n]w[n] determines how energy from a strong component leaks into nearby Doppler frequencies.

WindowMain practical characteristicWhen to consider it
RectangularNarrow central lobe but high sidelobesControlled tests with bin-centred components or when leakage is demonstrably harmless
HannGood general balance between leakage and broadeningStrong default for micro-Doppler visualization and feature generation
HammingSimilar role to Hann with a different sidelobe patternWhen experiments show better weak-feature visibility near strong components
BlackmanStronger sidelobe suppression but a broader main lobeHigh-dynamic-range cases where leakage is more damaging than lost separation
Time-domain shapes and frequency responses of rectangular, Hann, Hamming and Blackman windows.
Figure 2. Rectangular, Hann, Hamming and Blackman windows trade main-lobe width against sidelobe leakage.

Harris’s classic review shows why window selection cannot be reduced to “pick the narrowest peak”: main-lobe width, sidelobe level, scalloping loss and noise bandwidth change together [6].

For a first implementation, use a periodic Hann window and document it. Both current SciPy and MATLAB documentation distinguish periodic windows for spectral analysis from symmetric windows commonly used in filter design [7, 8]. Then compare alternatives using an objective task metric rather than appearance alone.

4. Overlap controls the update interval—not the physical resolution

If adjacent windows overlap by NoN_o samples, the hop is

H=N_w-N_o,

and the time between adjacent spectrogram columns is

\frac{H}{\mathrm{PRF}_{\mathrm{eff}}}.

With 75% overlap, H=Nw/4H=N_w/4. The spectrogram receives four time updates per window duration. This usually makes ridges look smoother and reduces the chance that a short event lies awkwardly between widely spaced frames.

However, adjacent columns now share many of the same samples. They are not independent measurements, and the window duration has not changed. Raising overlap from 50% to 90% can produce a visually dense image without improving the underlying Doppler discrimination.

Practical starting points are:

  • 50% overlap: economical baseline and suitable for parameter sweeps;
  • 75% overlap: strong default for smooth micro-Doppler tracks;
  • greater than 75%: useful for fine temporal sampling or ridge tracking when computational cost and frame correlation are acceptable.

For machine learning, high overlap can also create nearly duplicate training examples if individual STFT columns or heavily overlapping clips are split randomly. Always split data by participant, recording session or acquisition run before generating correlated samples.

5. FFT length controls the grid spacing—not the information content

The displayed Doppler-frequency spacing is

\Delta f_{\mathrm{grid}}
=
\frac{\mathrm{PRF}_{\mathrm{eff}}}{N_{\mathrm{FFT}}}

and the corresponding velocity-grid spacing is

\Delta v_{\mathrm{grid}}
=
\frac{\lambda\,\mathrm{PRF}_{\mathrm{eff}}}
{2N_{\mathrm{FFT}}}

When NFFT>Nw,N_{\mathrm{FFT}}>N_w, the windowed data are zero-padded. The DFT samples the same continuous windowed spectrum at more frequency points. This can make curves smoother, improve peak interpolation and create images of a chosen pixel size. It does not narrow the spectral window’s main lobe or make two unresolved targets physically separable.

This leads to a useful wording rule:

Report Δfgrid\Delta f_{\mathrm{grid}} as FFT-bin or plotted-grid spacing. Do not call it true Doppler resolution unless the coherent window and window response support that claim.

The distinction is especially important in papers that increase nfft while holding the window length fixed. The image becomes denser, but the coherent observation time has not increased.

A numerical example at 77 GHz

Assume:

  • carrier frequency fc=77f_c=77 GHz;
  • wavelength λ3.89\lambda\approx3.89 mm;
  • effective PRF=1000PRF =1000 Hz;
  • Hann window length Nw=128N_w=128 samples;
  • 75% overlap.

The window duration is

T_w=\frac{128}{1000}=0.128\ \text{s},

and the hop is 32 samples, or 32 ms.

With NFFT=128N_{\mathrm{FFT}}=128:

\Delta f_{\mathrm{grid}}=7.8125\ \text{Hz},
\Delta v_{\mathrm{grid}}
\approx
\frac{0.00389\times7.8125}{2}
=0.0152\ \text{m/s}.

If the same 128 samples are transformed with NFFT=512N_{\mathrm{FFT}}=512, the grid becomes four times denser:

\Delta f_{\mathrm{grid}}=1.9531\ \text{Hz},
\Delta v_{\mathrm{grid}}\approx0.0038\ \text{m/s}.

But the window still contains only 128 ms of data. Its true ability to separate nearby components is still governed by that duration and the Hann response. The second plot is more finely sampled, not four times more physically resolved.

Carrier frequency changes the mapping between Doppler and radial velocity, but it does not determine the entire sensor choice. Our 24, 60 and 77 GHz radar comparison covers the wider bandwidth, antenna, timing, hardware-access and regulatory trade-offs.

What the same signal looks like with different settings

Four spectrograms of the same synthetic radar signal comparing short, balanced and long windows and zero-padding.
Figure 3. The same synthetic complex slow-time signal processed using four STFT configurations. Window duration changes the time–frequency compromise, while zero-padding changes the plotted grid without adding physical resolution. This is an illustrative simulation, not measured radar data.

A practical STFT parameter-selection workflow

Five-step workflow for selecting effective PRF, Doppler coverage, window duration, overlap and FFT length.
Figure 4. A practical order for selecting STFT parameters: acquisition-dependent quantities first, FFT grid last, followed by validation.

Step 1: Write down the effective slow-time sampling rate

Measure the time interval between consecutive samples of the sequence entering the STFT. Do not automatically use the ADC rate or aggregate chirp rate.

\mathrm{PRF}_{\mathrm{eff}}
=
\frac{1}{\Delta t_{\mathrm{slow}}}

Check TDM-MIMO interleaving, dropped chirps and nonuniform timing.

Step 2: Estimate the largest Doppler you must retain

Convert the largest expected radial speed into Doppler:

|f_{D,\max}|=\frac{2|v_{r,\max}|}{\lambda}.

Confirm that it fits inside the available slow-time Doppler interval with margin. If not, fix the acquisition configuration before tuning the STFT.

Step 3: Define two separate requirements

Do not ask only for “a clear image.” Specify:

  1. the shortest event or motion change that must remain localized; and
  2. the smallest Doppler or velocity separation that matters.

These requirements push the window in opposite directions. If no single window satisfies both, the problem requires multiple window lengths, an adaptive representation or another time–frequency method—not merely a larger FFT.

Step 4: Sweep window duration on a logarithmic or doubling grid

A defensible initial sweep is

N_w\in{64,128,256,512},

after converting those values into meaningful durations for your PRF. Powers of two are computationally convenient, but they are not a scientific requirement. Include non-power-of-two lengths when they better match the motion timescale.

For each candidate, record:

  • window duration;
  • window type;
  • overlap and hop duration;
  • FFT length;
  • Doppler-grid spacing;
  • velocity-grid spacing;
  • dynamic range and normalization; and
  • the task metric used to choose the setting.

Step 5: Begin with a periodic Hann window

The Hann window is a sensible baseline because it suppresses the severe leakage of a rectangular truncation without the very broad lobe of more aggressive tapers. It is not automatically optimal. Compare Hamming, Blackman or other windows if weak signatures sit beside strong torso or clutter components.

Step 6: Set 50–75% overlap

Use 50% while exploring parameters quickly. Move to 75% when smoother temporal sampling materially helps visualization or ridge extraction. Increase it further only when you can explain the benefit and accept the extra computation and correlation.

Step 7: Choose FFT length last

Set

N_{\mathrm{FFT}}\geq N_w.

The next power of two is a convenient baseline. Two- to four-times zero-padding is reasonable for smooth visualization or sub-bin peak interpolation, provided the article, code or paper labels it correctly as grid densification.

Step 8: Validate on the task, not the prettiest plot

For visualization, inspect whether motion boundaries and weak components remain interpretable. For estimation, measure error against a controlled target or simulator. For classification, select parameters on a validation set separated by subject or session.

Useful selection measures include:

  • Doppler-ridge error;
  • event-onset timing error;
  • reconstruction or concentration measures;
  • class-balanced validation accuracy;
  • cross-subject generalization; and
  • robustness across SNR, aspect angle and target range.

A visually sharp spectrogram can still encode leakage, aliasing or dataset-specific artifacts.

Reasonable starting points—not universal defaults

The following ranges are experimental starting points for uniformly sampled slow-time data. They are not standards and must be converted to samples using the actual effective PRF.

Analysis goalStarting window durationStarting overlapMain concern
Rapid transient or abrupt gesture50–150 ms75%Preserve onset and reversal timing
General walking or human-activity representation100–300 ms50–75%Balance limb tracks and activity timing
Slowly varying fine motion300 ms–1 s or longer50–90%Resolve narrow Doppler structure while controlling drift
Rotor or periodic mechanical micro-motionTest several windows relative to the rotation period50–75%Avoid averaging across too much modulation while retaining sidebands

If these ranges conflict with the required Doppler separation, report the conflict. Do not hide it with zero-padding.

Fine hand-gesture systems can require particularly high temporal update rates and careful event filtering. As a practical case study, our Google Soli paper breakdown explains how one 60 GHz system converted high-rate radar measurements into four gesture classes—and what its reported accuracy did not prove.

Python implementation

The function below accepts a one-dimensional complex slow-time sequence. It uses a periodic Hann window, returns a centred two-sided Doppler axis and normalizes the result to a 0 dB peak.

import numpy as np
from scipy import signal


def radar_micro_doppler_stft(
    x,
    prf_eff_hz,
    window_samples=256,
    overlap_fraction=0.75,
    nfft=512,
    dynamic_range_db=50.0,
):
    x = np.asarray(x)
    if x.ndim != 1 or not np.iscomplexobj(x):
        raise ValueError("x must be a 1-D complex slow-time sequence")
    if not 0 <= overlap_fraction < 1:
        raise ValueError("overlap_fraction must be in [0, 1)")
    if nfft < window_samples:
        raise ValueError("nfft must be at least window_samples")

    noverlap = int(round(overlap_fraction * window_samples))
    window = signal.windows.hann(window_samples, sym=False)

    f_d, t, z = signal.stft(
        x,
        fs=prf_eff_hz,
        window=window,
        nperseg=window_samples,
        noverlap=noverlap,
        nfft=nfft,
        detrend=False,
        return_onesided=False,
        boundary=None,
        padded=False,
    )

    f_d = np.fft.fftshift(f_d)
    z = np.fft.fftshift(z, axes=0)
    magnitude_db = 20 * np.log10(np.maximum(np.abs(z), 1e-12))
    magnitude_db -= np.max(magnitude_db)
    magnitude_db = np.maximum(magnitude_db, -dynamic_range_db)

    return f_d, t, magnitude_db


# Example conversion from Doppler to radial velocity
carrier_hz = 77e9
c = 299_792_458.0
wavelength_m = c / carrier_hz

f_d, t, spec_db = radar_micro_doppler_stft(
    slow_time_iq,
    prf_eff_hz=1000.0,
    window_samples=256,
    overlap_fraction=0.75,
    nfft=512,
)

velocity_mps = wavelength_m * f_d / 2

To plot it:

import matplotlib.pyplot as plt

plt.figure(figsize=(9, 5))
plt.pcolormesh(t, velocity_mps, spec_db, shading="auto", cmap="magma")
plt.xlabel("Time (s)")
plt.ylabel("Radial velocity (m/s)")
plt.colorbar(label="Relative magnitude (dB)")
plt.ylim(-3, 3)  # Set from the application, not by habit
plt.tight_layout()
plt.show()

For new SciPy projects, also review the ShortTimeFFT interface, which exposes the window, hop and FFT length explicitly [3]. The older stft call remains useful for a compact and widely recognizable example, but software defaults and interfaces should always be checked against the installed version.

MATLAB implementation

function [fd, t, specDb, velocity] = radarMicroDopplerSTFT( ...
        slowTimeIQ, prfEff, carrierHz, windowSamples, ...
        overlapFraction, nfft, dynamicRangeDb)

    arguments
        slowTimeIQ (:,1) {mustBeNumeric}
        prfEff (1,1) double {mustBePositive}
        carrierHz (1,1) double {mustBePositive}
        windowSamples (1,1) double {mustBeInteger,mustBePositive} = 256
        overlapFraction (1,1) double = 0.75
        nfft (1,1) double {mustBeInteger,mustBePositive} = 512
        dynamicRangeDb (1,1) double {mustBePositive} = 50
    end

    if isreal(slowTimeIQ)
        error("slowTimeIQ must retain the complex radar phase.");
    end
    if overlapFraction < 0 || overlapFraction >= 1
        error("overlapFraction must be in [0,1).");
    end
    if nfft < windowSamples
        error("nfft must be at least windowSamples.");
    end

    noverlap = round(overlapFraction * windowSamples);
    win = hann(windowSamples, "periodic");

    [S, fd, t] = spectrogram( ...
        slowTimeIQ, win, noverlap, nfft, prfEff, "centered");

    specDb = 20*log10(abs(S) + eps);
    specDb = specDb - max(specDb, [], "all");
    specDb = max(specDb, -dynamicRangeDb);

    c = 299792458;
    lambda = c / carrierHz;
    velocity = lambda * fd / 2;
end

Example call and plot:

[fd, t, specDb, velocity] = radarMicroDopplerSTFT( ...
    slowTimeIQ(:), 1000, 77e9, 256, 0.75, 512, 50);

imagesc(t, velocity, specDb);
axis xy;
xlabel("Time (s)");
ylabel("Radial velocity (m/s)");
title("Radar micro-Doppler spectrogram");
colormap turbo;
colorbar;
clim([-50 0]);

The ordering of MATLAB’s spectrogram inputs—window, overlap, FFT specification and sample rate—is documented in the official reference [2].

Nine common mistakes that make radar spectrograms misleading

1. Using the fast-time ADC sampling rate as the STFT rate

The Doppler STFT is normally evaluated along chirps or pulses. Its sample rate is the effective slow-time rate.

2. Ignoring transmitter interleaving

In TDM-MIMO, calculate the time interval between samples from the same transmit channel. Otherwise the Doppler scale can be wrong by the number of transmitters.

3. Taking magnitude before Doppler processing

This removes the complex phase evolution needed for coherent signed-Doppler estimation.

4. Calling zero-padding “improved resolution”

A larger FFT provides closer frequency samples. It does not increase the window’s coherent observation duration.

5. Using a one-sided spectrum for complex I/Q data

Approaching and receding motions occupy opposite signed Doppler frequencies. Use a centred two-sided transform unless a specific representation justifies otherwise.

6. Applying an excessively long window to a transient

A long window can make a fall or gesture appear to begin early and finish late because each column blends motion over the full window support.

7. Applying an excessively short window to weak narrow components

The resulting broad main lobe can bury small micro-Doppler features near a strong torso or clutter component.

8. Changing normalization between recordings

Per-image peak normalization improves visual contrast but removes absolute amplitude information. For quantitative comparison or machine learning, define whether scaling is global, recording-wise or frame-wise, and apply the same procedure to training, validation and test data.

9. Choosing parameters on the test set

Window length is a model or processing hyperparameter. Select it using simulations, calibration data or a validation partition—not the final test subjects.

When a fixed STFT is not enough

The STFT remains an excellent baseline because its behavior is understandable and reproducible. But one fixed window may be inadequate when the same recording contains both abrupt transients and narrow, slowly varying Doppler components.

Options include:

  • computing multiple STFTs with different window lengths;
  • using an adaptive or data-driven window;
  • applying reassignment or synchrosqueezing for sharper ridge localization;
  • using wavelet or other multiresolution representations; or
  • employing quadratic time–frequency distributions while managing cross-terms.

These methods introduce their own parameters and artifacts. For example, bilinear distributions can offer concentrated representations but may generate cross-terms, while adaptive representations require a selection rule that must be validated [5]. A stronger method should therefore be compared against a well-tuned STFT—not against arbitrary software defaults.

Research has also developed STFT-based estimators specifically for micro-Doppler parameter estimation [9]. Such estimators can refine peaks or model sinusoidal modulation, but they do not overturn the basic information limit imposed by the observation window and SNR.

A reproducibility checklist

Before publishing or training on a radar spectrogram, report:

  • Radar carrier frequency and wavelength
  • Pulse or chirp timing
  • Effective slow-time PRF for the analyzed channel
  • TDM-MIMO or other interleaving details
  • Target range-bin selection or tracking method
  • Clutter-removal method
  • Complex or magnitude input to the STFT
  • Window type and periodic/symmetric convention
  • Window length in samples and seconds
  • Overlap in samples or percent
  • Hop duration
  • FFT length
  • Doppler-grid spacing and velocity-grid spacing
  • One-sided, two-sided or centred frequency convention
  • Power or magnitude scaling
  • Decibel reference and displayed dynamic range
  • Normalization used across recordings
  • Validation criterion used to choose the parameters

This information is small enough to fit in one methods paragraph or table. Without it, a spectrogram is difficult to reproduce and easy to misinterpret.

Key takeaways

  1. Use the correct complex slow-time signal and effective PRF. Fix aliasing and axis errors before tuning the STFT.
  2. Choose window duration from the motion timescale and Doppler separation that matter. A longer window improves frequency discrimination but smears changes in time.
  3. Treat window shape as a leakage-versus-broadening decision. A periodic Hann window is a strong baseline, not a universal optimum.
  4. Use overlap to control time-grid density. It creates more closely spaced, correlated frames but does not change the window’s physical resolution.
  5. Use FFT length to control frequency-grid density. Zero-padding helps display and interpolation; it does not manufacture new information.
  6. Validate parameters on the real task. The best-looking image is not necessarily the best estimator or classifier input.
  7. Report every parameter and scaling choice. Reproducibility requires more than stating that a spectrogram was used.

The most reliable habit is simple: choose the window first, based on physics and motion; choose overlap second, based on the required update interval; and choose FFT length last, based on grid density and implementation needs.

References

  1. V. C. Chen, F. Li, S.-S. Ho, and H. Wechsler, “Micro-Doppler Effect in Radar: Phenomenon, Model, and Simulation Study,” IEEE Transactions on Aerospace and Electronic Systems, vol. 42, no. 1, pp. 2–21, 2006. IEEE Xplore. DOI: 10.1109/TAES.2006.1603402.
  2. MathWorks, “spectrogram—Spectrogram using short-time Fourier transform,” MATLAB documentation. Documentation.
  3. SciPy Developers, “ShortTimeFFT.spectrogram,” SciPy reference documentation. Documentation.
  4. V. Dham, “Programming Chirp Parameters in TI Radar Devices,” Texas Instruments Application Report SWRA553A, revised 2020. PDF.
  5. D.-H. Park, M.-W. Jeon, and H.-N. Kim, “Activity-dependent resolution adjustment for radar-based human activity recognition,” Signal Processing, accepted manuscript, 2025. DOI: 10.1016/j.sigpro.2025.110456. Author manuscript.
  6. F. J. Harris, “On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform,” Proceedings of the IEEE, vol. 66, no. 1, pp. 51–83, 1978. DOI: 10.1109/PROC.1978.10837.
  7. SciPy Developers, “hann,” SciPy reference documentation. Documentation.
  8. MathWorks, “hann—Hann window,” MATLAB documentation. Documentation.
  9. I. Djurović, V. Popović-Bugarin, and M. Simeunović, “The STFT-Based Estimator of Micro-Doppler Parameters,” IEEE Transactions on Aerospace and Electronic Systems, vol. 53, no. 3, pp. 1273–1283, 2017. IEEE Xplore.