# Ambiguity function The **ambiguity function** is a two-dimensional function of time delay and Doppler frequency that describes how a pulsed [[Radar|radar]] or sonar receiver's [[Matched_filter|matched filter]] responds to a moving target: it is fixed by the shape of the transmitted pulse and the filter matched to it, not by any particular target or scene, and it sets the sharpest range and velocity resolution that waveform can ever deliver. A perfectly compact ambiguity function (a single spike at zero delay and zero Doppler and nothing elsewhere) would let a radar read off range and velocity with no cross-talk between them and no confusion with any other delay or Doppler; real pulses fall short of that ideal in characteristic ways that this article works through pulse by pulse. A three.js companion renders the ambiguity function of a simple pulse and of a linear-FM chirp as one surface over the delay-Doppler plane, and the sketches carried by the neighbouring [[Radar]], [[Doppler_effect]] and [[Sonar]] articles show pieces of the same trade-off in the pulses and echoes those systems actually send. ## Background and motivation A radar or sonar detects a target by transmitting a pulse and passing the received echo through a filter matched to the transmitted waveform, the standard building block of [[Detection_theory|detection theory]], which maximizes the output signal-to-noise ratio at the instant the echo arrives. The same matched filter's output at every other delay, and at every Doppler shift the echo might carry if the target is moving, is the ambiguity function, `chi(tau, nu) = | integral s(t) s*(t + tau) e^(j 2 pi nu t) dt |`: the magnitude of the correlation between the transmitted signal `s(t)` and a copy of itself delayed by `tau` and shifted in frequency by `nu`. The construction is closely related to [[Convolution|convolution]], since correlating a signal with a shifted copy of itself is convolution with a time-reversed copy, and the pulse's own envelope acts like a [[Window_function|window]] inside the correlation integral. At zero Doppler shift the ambiguity function reduces to the ordinary [[Autocorrelation|autocorrelation]] of the pulse with itself, the same correlation-with-a-delayed-copy construction used throughout signal processing[^dspac]. Because `chi` depends only on the waveform, never on a target's actual range or speed, it describes what a given pulse-and-filter design can distinguish before any target scenario is considered: a wide central peak along delay means two closely spaced targets will be hard to separate in range, and a wide peak along Doppler means two targets moving at similar speeds will be hard to separate in velocity, regardless of how the receiver is tuned afterward. The function was introduced in this form by P. M. Woodward, whose 1953 book on radar and information theory first treated the delay-Doppler response as an object worth studying in its own right[^woodward53]. ## Relationship to time–frequency distributions The ambiguity function is closely tied to the other standard tool for describing how a signal's frequency content changes with time, the Wigner–Ville distribution: the two are a two-dimensional [[Fourier_transform|Fourier transform]] pair, one written over delay and Doppler and the other over time and [[Frequency_domain|frequency]], so that the two objects carry the same information about a signal in two different domains. A feature that is hard to see in one representation is often easier to read in the other, which is why radar and sonar designers move between them rather than committing to just one. Both belong to a broader family of quadratic time–frequency representations built from a signal multiplied against a shifted copy of itself, of which the ordinary [[Short-time_Fourier_transform|short-time Fourier transform]]'s squared magnitude, the [[Spectrogram|spectrogram]], is the simplest, linear-filtering member; the exact Fourier-pair relationship between the ambiguity function and the Wigner–Ville distribution is standard time–frequency analysis and needs no citation beyond the general correlation construction already given above. ## Wideband ambiguity function The definition above assumes a narrowband signal, one whose bandwidth is small next to its carrier frequency, so that a moving target's Doppler shift is well approximated as a simple frequency shift of the carrier. A fast-moving target, or a genuinely wideband pulse whose bandwidth is a large fraction of its centre frequency, instead compresses or stretches the echo in time, the way a chirp's whole waveform is squeezed by a large closing speed rather than merely shifted in tone. The wideband ambiguity function replaces the frequency-shift term with a time-scaling term, `chi_wb(tau, s) = sqrt(s) * integral s(t) s*(s(t - tau)) dt` in one common convention, where the scale factor `s` plays the role Doppler frequency plays in the narrowband case, related to closing speed through the ratio of that speed to the propagation speed rather than through the carrier wavelength alone. [[Sonar|Sonar]], whose signal speed (sound in water) is far slower than a fast target's speed can approach, and very-wideband radar both push into this regime often enough that the narrowband approximation used elsewhere in this article is stated as an approximation rather than treated as exact. ## Ideal ambiguity function An ideal ambiguity function would be a single spike at the origin, `tau = 0` and `nu = 0`, and zero everywhere else: a target's range and velocity could then be read off with no risk of confusing it with a target at a different range or speed, and two targets at any different delay or Doppler would never be confused for one. No real, finite-energy pulse achieves this. Woodward's own analysis showed that the volume under the squared ambiguity function, integrated over the whole delay–Doppler plane, is fixed by the pulse's energy alone and does not depend on the pulse's shape[^woodward53]: `integral integral |chi(tau, nu)|^2 dtau dnu = |chi(0,0)|^2` under the usual normalization, a result sometimes called the radar [[Uncertainty_principle|uncertainty principle]]. Because that volume is conserved, sharpening the ambiguity function's peak in one region necessarily spreads it out somewhere else on the plane; waveform design is therefore the art of choosing where the unavoidable spread goes, not of eliminating it. ## Properties Every ambiguity function shares a short list of properties that follow from its definition rather than from any particular pulse. It is maximum at the origin, `|chi(0,0)| = 1` under the usual normalization, since a signal correlates most strongly with an undelayed, unshifted copy of itself. It is symmetric under a sign flip of both variables together, `|chi(-tau,-nu)| = |chi(tau,nu)|`, because reversing the roles of the two copies of `s(t)` being correlated simply negates both the delay and the Doppler shift. Its value depends only on the pulse's shape, never on a target's actual range, speed or reflectivity, which is what makes it a property of the waveform rather than of any single measurement; a designer can therefore compare candidate waveforms by their ambiguity functions alone, before any target scenario is specified, and use that comparison as an [[Estimation_theory|estimation]]-theoretic bound on how precisely range and velocity could ever be read from that waveform. The width of the central peak along the delay axis at zero Doppler sets the pulse's range resolution, and the width along the Doppler axis at zero delay sets its velocity resolution, so the two resolutions can be read directly off two perpendicular slices through the same delay–Doppler surface. ## Square pulse A rectangular pulse of duration `T` and constant amplitude is the simplest case to work through by hand. Its zero-Doppler cut, the ordinary autocorrelation of a rectangular pulse with itself, is a triangle, `|chi(tau, 0)| = 1 - |tau|/T` for `|tau| <= T` and zero beyond, because two rectangles of equal width and height overlap less and less as one slides past the other, vanishing once the offset reaches a full pulse width. Its zero-delay cut, taken across Doppler instead, is a sinc function, `|chi(0, nu)| = |sin(pi nu T) / (pi nu T)|`, the same shape that appears whenever a finite rectangular window is examined in frequency[^dspres]: the first null falls at `nu = 1/T`, so a rectangular pulse of length `T` resolves Doppler shifts only about as finely as `1/T` allows. Because the pulse's time–bandwidth product is close to 1 (its bandwidth is set by the same `T` that sets its duration), a rectangular pulse cannot make its range resolution and its Doppler resolution independently fine: shortening `T` sharpens the delay peak but widens the sinc in Doppler, and lengthening `T` does the reverse. This coupling between how long a signal is examined and how finely its frequency content resolves is the same trade-off that limits any windowed Fourier analysis, radar pulse or not[^dspres]. ## LFM pulse A linear frequency-modulated pulse, or chirp, sweeps its instantaneous frequency linearly across a bandwidth `B` over a duration `T`, and its ambiguity function looks very different from the rectangular pulse's. Instead of a peak that sits squarely along the delay axis, the chirp's ridge tilts across the delay–Doppler plane along `nu * T = -(B/T) * tau` in normalized units, so a target's unknown Doppler shift is not just noise on top of the range measurement: it reads back as an apparent shift in range, and a receiver that assumes zero Doppler places a moving target's echo at the wrong delay by an amount proportional to how fast the target is closing. What the chirp buys in exchange for that coupling is a time–bandwidth product `B*T` that can be made far larger than 1, unlike a simple pulse whose bandwidth and duration are locked together: the matched filter that performs the compression, itself a [[Filter_design|filter-design]] problem in its own right, narrows the zero-Doppler cut to about `1/B` in delay on receive, giving fine range resolution, while the pulse can still be transmitted for a long duration `T` that carries plenty of energy and gives fine Doppler resolution along the other axis of the same ridge. This is the basic mechanism of pulse-compression radar: a long, low-power chirp is transmitted for good energy and good Doppler resolution, and the matched filter compresses it back down to a short-pulse-equivalent range resolution on receive, decoupling the two resolutions a simple pulse ties together, at the cost of the range–Doppler coupling along the tilted ridge. ## Multistatic ambiguity functions A radar or sonar system need not transmit and receive at the same location. In a bistatic system, one site transmits and a separate site receives, and in a multistatic system several receivers, or several transmitter–receiver pairs, observe the same volume at once. The delay a bistatic pair measures is proportional to the sum of the transmitter-to-target and target-to-receiver ranges rather than to a single round trip, so a constant-delay contour is an ellipse with the transmitter and receiver at its two foci rather than a circle centred on one site, and the Doppler shift a bistatic pair sees depends on the target's velocity component along the bisector of the transmitter–target–receiver angle rather than along a single line of sight. The cross-ambiguity function generalizes the ordinary ambiguity function to this geometry, correlating the signal received at one site against a delayed, Doppler-shifted copy of what a different site transmitted, and its resolution properties depend on the transmitter–receiver–target geometry as well as on the waveform. A full historical account of who first extended Woodward's construction to the multistatic case is not established in the sources cited here[^multistatic-cn]. ## Ambiguity function plane Because the ambiguity function is a function of two variables, it is normally shown as a surface or a [[Heat_map|contour map]] over the delay–Doppler plane rather than read off as a single number: delay `tau` runs along one axis, Doppler `nu` along the other, and the plotted quantity is `|chi(tau, nu)|` or its square, often in decibels so that the sidelobes surrounding the central peak (inevitably present given the fixed volume described above) remain visible next to a peak that can be many decibels taller. A rectangular pulse's plane shows the triangular ridge and sinc cut described above spreading from the origin with roughly circular symmetry; a chirp's plane instead shows the tilted knife-edge ridge running diagonally across the same axes. When the plane is computed numerically on a discrete grid of delay and Doppler samples rather than analytically, sampling that grid too coarsely can itself introduce [[Aliasing|aliasing]] into the estimated surface, a numerical artefact distinct from the physical ambiguity the function describes. Reading a design's strengths and weaknesses off this plane (where the sidelobes sit, how fast the central peak falls off along each axis, whether the peak is a compact blob or a stretched ridge) is the standard way radar and sonar waveforms are compared before either is ever built. ## Example A concrete pair of numbers shows what the trade-off costs in practice. A rectangular pulse of duration `tau_p = 1 microsecond` gives a range resolution `dR = c * tau_p / 2 = 150` metres, the same relationship the neighbouring [[Radar]] article's sketch shows directly, where widening its pulse-width control coarsens the range resolution until two close targets merge into one hump. Reaching a much finer range resolution, 15 metres, with a simple rectangular pulse of matching duration (`tau_p = 100` nanoseconds) would demand a correspondingly wide receiver bandwidth and would concentrate all of the pulse's energy into a very short, very high-power burst — and from the Doppler side of the same ambiguity function, a pulse that short resolves velocity only to about `1/tau_p = 10` megahertz, far coarser than the few-hundred-hertz Doppler shifts a real aircraft or ship produces. A linear-FM pulse reaches the same 15-metre range resolution from its bandwidth alone, `dR = c/(2B)` with `B` around 10 megahertz, while keeping a transmitted duration — and therefore a Doppler resolution — that the matching rectangular pulse could not offer at the same range resolution: the range–Doppler decoupling the LFM pulse's tilted ridge buys, worked out in numbers rather than in the shape of the ridge. ## Microsims This article carries no p5.js sketch of its own. A three.js companion instead renders the range–Doppler trade-off described above as a single surface, plotting the magnitude of the ambiguity function over the delay–Doppler plane for a simple rectangular pulse and for a linear-FM chirp, so the compact, roughly symmetric surface the rectangular pulse produces can be compared directly with the chirp's tilted, knife-edge ridge. *Try:* in the [[Radar]] sketch, widen the pulse-width control and watch the zoomed pair of close targets merge into one hump — the same delay-axis spreading the square pulse's triangular ambiguity cut predicts above. *Try:* in the [[Doppler_effect]] sketch, raise the source speed and compare the two observer markers' frequency readouts — the same frequency shift that, unaccounted for, a matched filter misreads as a range error along a chirp's tilted ridge. *Try:* in the [[Sonar]] sketch, lengthen the ping and watch the same close-target pair merge on its A-scan, then change the assumed sound speed and watch every measured range slide off its true-range tick — a reminder that the delay axis of any ambiguity function is only as good as the propagation-speed assumption used to turn it into range. <!-- SIGSIM:BEGIN g35 — Signal Processing portal microsim (framework build, specs/sims/Ambiguity_function.json); do not hand-edit inside --> **Microsim — three.js (Wikitube framework), pending deploy:** *Ambiguity function: range and Doppler resolution as one surface* will play here once `https://wikitube-3d-microsims.netlify.app/signal/Ambiguity_function.html` is live. <!-- pending: <div class="wt-sim" data-src="https://wikitube-3d-microsims.netlify.app/signal/Ambiguity_function.html" data-title="Ambiguity function"></div> --> *Built from `MICROSIM_GUIDE/specs/sims/Ambiguity_function.json`; part of the [[Signal_processing]] set ([[PORTAL_Signal_Processing]]).* <!-- SIGSIM:END --> ## Wikipedia : Wikitube **Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Ambiguity_function) : [Wikitube](https://en.wikitube.io/wiki/Ambiguity_function) Skeleton mirrored at revision 1364578235. Prose, emphasis and the microsims are Wikitube's own. ## See also - [[Radar]] - [[Matched_filter]] - [[Doppler_effect]] - [[Sonar]] - [[Autocorrelation]] - [[Short-time_Fourier_transform]] - [[Uncertainty_principle]] - [[Window_function]] ## References [^woodward53]: Woodward, P. M. *Probability and Information Theory, with Applications to Radar*. Pergamon Press, 1953. [^dspac]: Downey, A. B. *Think DSP: Digital Signal Processing in Python*. 2012, pp. 63-67 (PDF pages). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/think-dsp-digital-signal-processing-in-python . CC BY-NC. [^dspres]: Downey, A. B. *Think DSP: Digital Signal Processing in Python*. 2012, pp. 70-71 (PDF pages). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/think-dsp-digital-signal-processing-in-python . CC BY-NC. [^multistatic-cn]: Citation needed: a primary source establishing who first extended Woodward's ambiguity function to the bistatic or multistatic case, and when. ## Further reading - Tiberius, C.; Mulder, M. *Engineering Signal Analysis: From Fourier to filtering — Theory*. 2026. Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/engineering-signal-analysis-from-fourier-to-filtering-theory . CC BY. - Ellingson, S. *Radio Systems Engineering*, Revised 1st ed. 2023. Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/radio-systems-engineering . CC BY-NC. - Downey, A. B. *Think DSP: Digital Signal Processing in Python*. 2012. Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/think-dsp-digital-signal-processing-in-python . CC BY-NC. - Stiber, M.; Stiber, B.; Larson, E. *Signal Computing: Digital Signals in the Software Domain*. 2020. Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/signal-computing-digital-signals-in-the-software-domain . CC BY-SA. - Johnson, D. *Fundamentals of Electrical Engineering I*. 2014. Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/fundamentals-of-electrical-engineering-1 . CC BY. <!-- Hubs: Signal_processing. Portals: PORTAL_Signal_Processing. Signal Processing portal wave 1 · 2026-09-17 · drafted. -->