How to Correct FFT Phase Values from a Windowed Offset?

49 Views Asked by At

I've been stuck on this porblem for a while and I havent been able to come up with a soultion yet.

Problem Statement: I have a spinning disk which has some rotational frequency. Each second my aquisition system will perform an FFT calculation and I recieve its imaginary and real components. This will happen for over the duration of 1 minute, so at the end I will have 60 FFT values. Upon characterizing my data I discovered that my phase has perdominant bimodal phase distribution. Looking at my time record it appears that my data isnt being collected at exactly every second, there exists a few miliseconds where the program is either lagging or ahead of the 1 second interval, i.e. 0.999s or 1.001s. I suspect that I have encountered a phase drift with my windowing. Also, I think this "lag" is becuase my program is processing its FFT values, which causes the phase drift.Is there a way to fix this phase drift after the data has already been collected?

Here are my known variables are below.

-Rotational Frequency
-Sample Frequency and all other aquisition parameters (original signal is unknown)
-Time when the FFT Sample was collected
-phase 
-magnitude

Also probably important to note, I am using matlab "phase" function which is an atan2 calculation on the FFT values to determine my phase.

What I've tried to adjust the phase:

(1) Windowed Phase Contribution = unwrap((Rotational Frequency) * (Difference of Time Between Samples) * 2pi)

(2) Corrected Phase = Recorded Phase - (Windowed Phase Contribution)

This has not yeilded sensable results. Im sure that these equations are not correct.

If this can not be resolved after collecting data then do I need to adjust windowing for my program, if so what do you recommend, I think I am using a Hanning at the moment?

Thanks for your time!

0

There are 0 best solutions below