DFT standards

Status
Not open for further replies.
Those last times I am busy with short FIRs, having an odd length like 31-tap or 101-tap. The odd length enables precisely locating the FIR midpoint. This is of importance in speakers crossovers, where you want the sum of the two outputs to be a Dirac.

On the other hand, by definition, the DFT needs an even amount of samples.

What I'm thus doing, is to add one tap at the end of the FIR, with a zero coefficient.

I'm currently trying to embed the speaker linearization in the FIR. I thus analyze the unfiltered speaker white noise or pink noise response, in a two-channel DFT analyzer (this way the phase gets extracted) having a geometry that's compatible with the FIR I'm going to use for the speaker crossover.

Say I am using a 9-tap FIR.
I extend it to 10-tap for interfacing the DFT.
The DFT returns 6 frequency bins, both in ReX and in ImX.
This is 12 pieces of information, actually only 10 to be considered as true independent information, because the first and last ImX values are always equal to zero.
This looks reassuring : 10 pieces of information IN, and 10 pieces of information OUT.

I need to graph the DFT output on the PC screen.
Is there a standardization about this?
This is far from trivial, when paying attention to the details.

Say the sampling frequency is 10 kHz.

The first and last frequency bins exhibit half the normal bandwidth.

Band 1 : DC to 0.50 kHz, center is 0.25 kHz, bandwidth is only 0.50 kHz
Band 2 : 0.50 kHz to 1.50 kHz, center is 1.00 kHz, bandwidth is 1.00 kHz
Band 3 : 1.50 kHz to 2.50 kHz, center is 2.00 kHz, bandwidth is 1.00 kHz
Band 4 : 2.50 kHz to 3.50 kHz, center is 3.00 kHz, bandwidth is 1.00 kHz
Band 5 : 3.50 kHz to 4.50 kHz, center is 4.00 kHz, bandwidth is 1.00 kHz
Band 6 : 4.50 kHz to 5.00 kHz, center is 4.75 kHz, bandwidth is only 0.50 kHz

How shall we label the "spectrum analyzer" frequency axis?

The "DFT exact" way is to only label the frequency edges.
Thus never commit in labeling frequency bands.
A "spectrum bar" will thus only exist "between edges".

Most users would prefer seeing a name on each frequency band.
Just like they see frequency labels on their graphic equalizers.
Of course they would reject vague names like Band 1, Band 2, etc ...
They would like to see names like 0.25 kHz, 1.00 kHz, 2.00 kHz, 3.00 kHz, 4.00 kHz, 4.75 kHz.
However, doing so we can expect phone calls from them, saying that 0.25 kHz should be re-labelled "DC" and that 4.75 kHz should be re-labelled "5 kHz".

What's the industry norm about this?

There is a second annoying detail. How to deal with the half-width frequency bands (the first one and the last one)?

If we leave the DFT "spectrum analyzer" as is, the first and the last frequency bands will be -6 dB down the others when analyzing a white noise. This is normal, as the DFT displays nothing else than the energy in a given frequency band. So, if there is a white noise at the input, if the frequency bandwidth is half, the collected energy will be half.
If we leave the spectrum analyzer "DFT-exact", we can expect phone calls from customers, saying that the first and last frequency bands went mis-calibrated.

What's the industry norm about this? Is it allowed, is it recommended, to cheat with the first and last DFT bins, raising their sensitivity by a factor of two?

Then comes the DFT-then-iDFT idea. Currently I am using the WinXP PC as platform. When declaring a numeric variable "As Double" in MS Visual Basic 2010, I think I am relying on 64-bit floating point arithmetic. I'm curious to see the rounding effets. I thus consider operating one thousand DFT-then-iDFT iterations, and compare the resulting 10-tap FIR with the 10-tap FIR I've been starting from. Checking if the last coefficient is still equal to zero.
But wait a minute, in such DFT-then-iDFT process, do I need to cheat with the first and last frequency bin sensitivities, raising their sensitivities by two, or is it mandatory to leave them "DFT-exact"?

Any advice welcome.
 

Attachments

  • FIRs having an odd length, and DFT.jpg
    FIRs having an odd length, and DFT.jpg
    200.6 KB · Views: 95
Last edited:
Just wrote a small Visual Basic 2010 application doing DFT followed by iDFT in a loop, in order to quantify the signal degradation. Thousands of iterations in a few minutes using a modern PC. After one 500 iterations, there is no visible degradation on the time-domain plot, same for the FFT plot. The time-domain data gets saved on the c:\ disk. Those are files "A" and "B". Over there, using the text files, one can see how the values got changed, albeit in infinitesimal proportions. Looks reassuring.
 

Attachments

  • DFT iDFT.jpg
    DFT iDFT.jpg
    188.9 KB · Views: 77
  • DFT iDFT.zip
    DFT iDFT.zip
    219.1 KB · Views: 51
Status
Not open for further replies.