Two tones closer than one bin of a 64-point DFT blur into one lump. Here three methods read the same 64 samples in turn: the periodogram, Burg’s AR model and MUSIC. Watch the diamonds at the peaks against the two dotted lines, where the true tones are.
Two tones inside one bin
64 samples: cos(0.20πn) + cos(0.23πn + 2.0) + noise of RMS 0.1 (seed 254; measured 0.0950); one bin is 2π/64 = 0.03125π.
Periodogram (zero-padded): one lump, at 0.221π, between the two dotted lines. The tones are 0.96 bins apart.
Describe this picture
One panel for 64 samples of plus noise of RMS 0.1 (seed 254; measured 0.0950), where one bin is 2π/64 = 0.03125π. Level in dB re each curve’s own peak, from −40 to 2, against Ω from 0.1π to 0.35π rad/sample; lower values are drawn on the floor. Two dotted vertical lines, labelled “0.20π” and “0.23π”, mark the true tones. The current method’s curve is a solid line with filled diamonds at its peaks. The earlier methods’ curves stay as faint lines, the periodogram dashed and AR(16) dash-dotted, and a key names each curve. The readouts are the method, the number of peaks found and where. The zero-padded periodogram shows one lump, at 0.221π, between the two dotted lines: the tones are 0.96 bins apart. Burg’s AR(16) shows two peaks, at 0.201π and 0.231π. MUSIC, with a 16 × 16 matrix and 4 signal dimensions, shows two sharp peaks, at 0.201π and 0.232π, next to the dotted lines. Once the clip has finished, three buttons in a group named “Method”, “periodogram”, “AR(16)” and “MUSIC”, choose the solid curve; the other two stay faint, and MUSIC’s faint line is short-dashed.
Closer than one bin
Two stars close together in the night sky can look like one blur in a small telescope. A bigger telescope splits them. But if you know that each star is a point of light, you can fit two points to the blur and read where they sit. This page does the same for two tones.
Here is the record. I take samples of
where is white noise of nominal RMS 0.1, as in Random processes (24.2). It is a seeded draw (seed 254), so it is the same on every visit. This draw measures RMS 0.0950, a power of 0.0090. Each tone has power 0.5, so each stands 17.4 dB above the noise.
One bin of a 64-point DFT is . The tones are apart, which is 0.96 of a bin. In “Two tones 100 Hz apart, more and more bins” of The DFT (13.2), two tones needed a bin spacing no larger than their gap. Here that asks for about samples, and I have 64.
Padding does not rescue me. In “Padding cannot split two tones” of Zero-padding and resolution (15.3), each tone left a lump as wide as the record allows, and padding only drew that lump more finely. So the periodogram of The periodogram (25.1), computed at 8193 frequencies from 0 to π, shows one lump. Its top is at 0.221π, between the two tones.
A periodogram assumes nothing about the signal, and that is also its limit. The two methods on this page assume a model: a known number of tones in white noise. In return they can split tones closer than one bin. From statistics I assume only what 24.2 used: white noise is uncorrelated from one sample to the next, so .
Poles instead of bins
In “A smooth model against a ragged periodogram” of Parametric models and linear prediction (25.3), an AR model gave the spectrum . It peaks wherever comes close to 0, which happens next to a pole near the unit circle. A sharp peak needs a pole near the circle, not a long record. So two pairs of poles can make two peaks closer than a bin.
The question is how to find the coefficients from 64 samples. In “One order at a time”, 25.3 estimated the autocorrelation and ran the Levinson–Durbin recursion on it. That estimate divides by and treats the samples outside the record as zeros, and its DTFT is exactly the periodogram. So it carries the same blur: on this record, order 16 by that route still gives one peak, at 0.223π.
Burg’s method, from J. P. Burg (1967), keeps the recursion and changes one step. It still adds one reflection coefficient per order, with . But it takes each from the data themselves, not from an autocorrelation.
At order it predicts each sample from the samples before it, and also from the samples after it. Then it picks the that makes the squares of both prediction errors, added up, as small as possible. It only uses products of samples inside the record, so nothing is filled with zeros. And no can exceed 1, so the model is stable, by 25.3’s rule.
As a check, on 25.3’s 4096 samples of AR(4) noise, Burg’s order 4 returns the true coefficients to within 0.014.
Tones in noise are not exactly an AR process, so the model needs more than the four poles of two tones. On this record order 8 still gives one peak, at 0.215π. Order 16 gives two, at 0.201π and 0.231π, against the true 0.200π and 0.230π.
Four above the floor
The second method looks at short pieces of the record side by side. Cut the record into overlapping pieces of samples. Each piece is a snapshot, written as a column:
A snapshot runs forward in time, oldest sample first. With and 64 samples, goes from 0 to 48, so there are 49 snapshots.
For one snapshot, the products of every pair of its samples fill a 16 × 16 table, . Average the 49 tables, and you have an estimate of the correlation matrix:
Its entry in row and column , counting from 0, is an average of . So it estimates of 24.2, as in 25.3’s matrix , but made directly from products of samples.
A real process has the same correlations played backward, because . So the true matrix does not change if I reverse the order of its rows and of its columns. The estimate changes a little, so I average it with its reversed copy, which uses every snapshot twice, once read forward and once backward. This is forward–backward averaging, and from here on is the averaged matrix.
Directions that are only stretched
Now one idea from linear algebra. An eigenvector of is a direction that only stretches, and the stretch is its eigenvalue :
You met eigenvectors in “Arrows in, the same arrows out” of The DFT as a matrix (13.5). The one fact I need is this: a symmetric matrix such as has eigenvectors that are orthogonal, at right angles to each other, with real eigenvalues. A library routine such as NumPy’s eigh finds them, each scaled to length 1, and I number them from the largest eigenvalue down.
Why should tones stand out among them? A cosine is two complex exponentials, , as in “Two points spinning opposite ways” of Complex exponentials & phasors (3.4). So two real tones are four exponentials, at and . A snapshot of is the number times one fixed column:
Its conjugate transpose is a row of 13.5’s matrix , with replaced by any . Call the four frequencies to . For a long record, the correlation matrix of the two tones plus white noise is
The is each exponential’s power, the square of its amplitude . The noise adds on the diagonal only, because white noise is uncorrelated at every lag but 0.
Now take any column orthogonal to all four, so that for each . Every term of the sum then sends to 0, and
So is an eigenvector with eigenvalue . In 16 dimensions, four columns leave room for such directions. The other four eigenvectors lie among the exponentials, and their eigenvalues add the tones’ power to .
The four eigenvectors with the largest eigenvalues span the signal subspace, which means all their combinations. The other twelve span the noise subspace. So I expect four eigenvalues well above the noise power and twelve equal to it.
Here are this record’s eigenvalues in decibels, . No eigenvalue is negative, because is an average of tables .
The four tallest bars are 8.509, 7.426, 0.428 and 0.253. The other twelve range from 0.0025 to 0.0142 and average 0.0101, which is −20.0 dB. That is close to the measured noise power, 0.0090. They are not all equal, because 49 snapshots are a small sample: the exact matrix of the model, with , has all twelve at 0.0090.
Why are the third and fourth so much smaller than the first two? Over 16 samples, one tone slips only against the other, less than a quarter turn. So the two tones look almost alike, and most of their power lies along two directions they share. The model’s exact matrix agrees: 0.484 and 0.268 for the third and fourth.
This is how to read the number of tones from data. Count the eigenvalues that stand clearly above the floor, and halve the count, because each real tone is two exponentials. Here there are four, so two tones.
Two tones inside one bin
The twelve noise eigenvectors are orthogonal to every tone’s column . Turn this around: try every frequency , and ask how much of lies in the noise subspace. Because the have length 1 and are orthogonal, that part has the squared length
Each term is the DTFT of the 16 entries of , the sum of “Samples, turned and added” in The DTFT (12.2). So each noise eigenvector, used as a filter of 16 taps, nearly blocks both tones. On this record the sum is 0.00015 at 0.20π and 0.00079 at 0.23π, against 12.0 on average from 0 to π.
MUSIC (multiple signal classification, from R. O. Schmidt, 1986) draws the reciprocal:
Where the sum nearly vanishes, the curve shoots up. This curve is a pseudospectrum: its height says how nearly misses the noise subspace, not how much power sits at .
The picture at the top of the page shows the three estimates of this one record in turn: the periodogram, Burg’s AR(16), and MUSIC with and a signal subspace of four dimensions. They measure different things, so each curve is drawn in decibels relative to its own peak. After the clip, three buttons switch between them.
Notice where the diamonds land at the end. MUSIC’s peaks sit at 0.201π and 0.232π, against the true 0.200π and 0.230π: off by 0.03 and 0.07 of a bin. Between them its curve falls to −20.9 dB.
MUSIC has two relatives worth naming. Pisarenko’s method (V. F. Pisarenko, 1973) is the smallest case: is one more than the number of exponentials, so the noise subspace is a single eigenvector. With on this record it finds one tone, at 0.217π, and puts its other two frequencies at 0 and π: five samples are too short to tell these tones apart.
ESPRIT (R. Roy and T. Kailath, 1989) uses the signal subspace instead. Moving a snapshot on by one sample turns each exponential by , and ESPRIT reads those turns from the signal eigenvectors. This page leaves its algebra there.
What the model costs
Both methods bought their sharpness with assumptions. MUSIC needs the number of tones, or a clear gap in the eigenvalues to read it from. It needs white noise, because the step to used the noise’s . If the signal is not a few tones in white noise, the model is wrong, and sharp peaks can mislead.
Here is what a wrong count does on this record. Tell MUSIC there is one tone, two signal dimensions, and it finds one peak, at 0.215π. Tell it three tones, six dimensions, and it still finds 0.201π and 0.232π. Here, too few dimensions merged the tones, and two too many did little harm.
Burg’s method has its condition too: the order must be high enough, and at 64 samples order 8 was not.
The periodogram has a trap of its own. The second tone’s phase, 2.0 rad, was chosen so that the periodogram shows one lump. At a phase of 1.0 rad, the same tones give two lumps of nearly equal height, 0.3 dB apart, at 0.195π and 0.236π. Both sit outside the true pair, so two lumps there are no better than one.
On that record, MUSIC still finds 0.200π and 0.232π.
The maths behind it · projection onto a subspace
MUSIC is an eigen-decomposition used as a projection. A tone’s exponential column has almost no component in the noise subspace, so its projection there, the pseudospectrum’s denominator, is nearly zero. Here the true tones’ columns, of squared length 16, keep less than 0.001 of it in the noise subspace.
The maths behind it · model selection
Deciding how many eigenvalues stand above the floor is a model-selection problem, the same question as choosing an AR order in 25.3. The AIC and MDL criteria from statistics answer it from the eigenvalues themselves.
Worked example
1. Resolution. One bin at is . The tones are apart, so they are of a bin apart. A periodogram would need about samples.
2. Count the tones. The eigenvalues are 8.509, 7.426, 0.428 and 0.253, then twelve averaging 0.0101. The fourth is 25.2 times the floor’s average, computed before rounding. Four exponentials make two real tones, and the floor sits near the measured noise power, 0.0090.
3. Read the frequencies. MUSIC’s peaks are at 0.201π and 0.232π, errors of 0.0008π and 0.0023π. That is 0.03 and 0.07 of a bin, where the periodogram gave one lump at 0.221π.
Where you’ll meet this
MUSIC was made for antenna arrays: Schmidt’s paper is titled “Multiple emitter location and signal parameter estimation”. Put antennas in a row, and a wave arriving at an angle reaches each one a little later than its neighbour. The antennas’ samples at one instant form a snapshot, and the phase step between neighbours plays the part of . Radar and sonar use this to find the directions of several sources at once.
The same methods estimate frequencies when a record must be short, in communications and in vibration analysis, where a machine or a bridge can have resonances close together. Burg’s method came from geophysics, where Burg presented it in 1967 for short seismic records. Praat, a widely used program for speech analysis, finds the resonances of the voice with it.
When the whole shape of a signal is known, not only its frequencies, a different tool finds it in noise: Matched filters and detection (26.1).
Reference card
| Quantity | Formula | Notes |
|---|---|---|
| Periodogram resolution | about | padding does not help |
| Burg AR(p) | each from forward and backward errors | stable; order well above 2 per tone |
| Snapshot | oldest sample first | |
| Correlation matrix | average of | forward–backward |
| Signal subspace | the eigenvectors of the 2 × (number of real tones) largest eigenvalues | the rest: noise subspace |
| Noise eigenvalues | white noise | |
| MUSIC | peaks at the tones | |
| Assumes | known number of tones, white noise |