Discrete Fourier Transform, overly large zero-frequency term

473 Views Asked by At

After looking around this website and many others, I've been able to figure out most of how to reconstruct my time-domain data by using the discrete fourier transform. (http://www-elsa.physik.uni-bonn.de/~dieckman/DFT/DFT.html was quite helpful.)

BUT: I cannot figure out why the s=1 term of my transformed frequency data is so overly large when compared to the rest. This question describes that the first term is an average of the data, but then the value should be approximately 1/50th of what the DFT yields.

Here's a snippet of the first bit of the time domain and resultant frequency domain vectors:

Time: {0.12545, 0.093577, 0.083911, 0.07649, 0.080237, 0.112101, 0.112242, 0.137024, 0.143058, 0.131691, 0.117775, 0.096736, 0.08467, 0.078244, 0.08896, 0.099834, …}

(modulus of) Frequency: {2.87325, 0.0447267, 0.0945387, 0.0535332, 0.0138847, 0.0161506, 0.0278486, 0.0229005, 0.0912012, 0.0123259, 0.03707, 0.0396228, 0.0781733, 0.0263154, 0.0117688, …}

My data is has n=500, timestep=1. I've been working with the data in Mathematica, but I don't believe the issue is with how I'm using Mathematica.

I'm really at a loss as to what would be causing such a huge offset frequency term. If I ignore it and just try to determine the shift manually, everything works fine! But...that's not good practice. I also had to omit it when calculating the periods of my modes, which isn't good practice either. So any explanations as to why the real-frequency is abnormally large and/or suggestions on how to approach it would be welcomed!

1

There are 1 best solutions below

0
On BEST ANSWER

Thanks to @kimchi lover, I think I'm able to understand what is going on now.

Mathematica uses the formula
$$ v_s=\frac{1}{n^{1/2}}\sum^n_{n=1}u_r e^{2\pi i(r-1)(s-1)n} $$
to evaluate the Fourier Transform of the time domain vector $u_r$, which yields a vector of equal length containing frequencies, $v_s$. The zeroth frequency, at $v_1$, is equal to $\frac{1}{n^{1/2}} \sum^n_{n=1} u_r$, so the sum of the time domain vector divided by the square root of the number of points. In my case, it just happens that since all my points are positive, I end up with a large zeroth frequency value.

The math still works out. When I apply that the zeroth frequency $v_1$ is related to the amplitude via $\sqrt{n}$: $v_1=A_0\sqrt{n}$, then the 'offset' is equal to $A_0=\frac{v_1}{\sqrt{n}}$, or $A_0=\frac{\sum^n_{n=1}u_r}{n}$, which was part of my confusion regarding different scalings.