Obtaining Phase and Amplitude from FFT

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
4 replies · 2K views
henryd
Messages
4
Reaction score
0
Is it possible to calculate the phase and signal amplitude from data gained from FFT?

For instance, if I have a samples from a signal B+A*cos(ψ), is it possible to obtain A and ψ?

Extra challenge: is it possible to do so without division? (I am looking to put this on a DSP and division is expensive)

Thanks!
 
Engineering news on Phys.org
Which is the time varying signal? I think the example you gave might be a constant. If so your problem is much easier to solve. :)

Basically: In theory, sure. In practice, maybe. For example, if A is less than a LSB or the sampling rate is slower than the frequency you want to observe, then no. And then when measuring phase there is the whole problem of, what exactly is t0?

You might want to look at this primer. I think it looks pretty good.
http://www.google.com/url?sa=t&rct=...3oipn3Fy-ZK4CYszA&sig2=4Mk4C5H4T1Ug3mHVbrYeMQ
 
Does it help if I have a pretty good estimate of ω?

The signal would be:

[tex]B + A\cos(\omega t + \phi)[/tex]

where B and A are constant
 
The output of your FFT is a complex number for each frequency bin.
Complex number is rectangular coordinates. You will use trig to convert these to polar (magnitude/phase angle).
 
henryd said:
Does it help if I have a pretty good estimate of ω?

The signal would be:

[tex]B + A\cos(\omega t + \phi)[/tex]

where B and A are constant

[itex]t[/itex] relative to what? what is the origin of your time axis? is it relative to the very first bin (sometimes called the "zeroeth" bin) [itex]x[0][/itex]. i.e. is bin 0:

[tex]x[0] = B + A\cos(\omega 0 + \phi) \ \[/tex] ?