FFT spectral analysis: am I missing something? Help!

Jul 14, 2006 0 Replies

OK, here goes...



I am working on some post acquisition data analysis, and particularly looking at the frequency spectrum.



So what I have is wave of 4096 data points, captured over a duration of



655.36 ms. 125 data points is the equivalent of 20 ms, and 32 data points of the amplitude are equivalent to 50mV. (My data is actually the output of a system, however what I am initially looking at is the signal driving the system, so I should have a near pure wave at either
17Hz, 25Hz, 40Hz, 50Hz, or 60Hz depending on the particular experiment I am looking at).

My steps that I currently am using is as follows:


1) obtain time signal - my actual data is very small, so the results are amplified (32 points = 50mV), however the amplitude should not really affect my spectral characteristics, (other than the amplitude of the plot), correct?

Example: here is a 50Hz signal

formatting link



2) apply a window (lets say for the sake of example I am using a blackman window), I perform a point by point multiplication on the data


3) perform FFT on the data, I am using the following algorithm, which I know is accurate, but I'll just include for kicks.



// Butterfly computations N2 = N; for( k = 0 ; k < m ; k++ ){ N1 = N2; N2 /= 2; ie = N / N1; ia = 0; for( j = 0 ; j < N2 ; j++ ){ co = W_Re[ia]; si = -W_Im[ia]; ia += ie; for( i = j ; i < N ; i += N1 ){ ip = i + N2; temp_Re = x_Re[i] - x_Re[ip]; temp_Im = x_Im[i] - x_Im[ip]; x_Re[i] = x_Re[i] + x_Re[ip]; x_Im[i] = x_Im[i] + x_Im[ip]; x_Re[ip] = co * temp_Re - si * temp_Im; x_Im[ip] = co * temp_Im + si * temp_Re; } } } // Bit reversal N1 = N - 1; j = 0; for( i = 0 ; i < N1 ; i++ ){ if( i < j ){ temp_Re = x_Re[j]; temp_Im = x_Im[j]; x_Re[j] = x_Re[i]; x_Im[j] = x_Im[i]; x_Re[i] = temp_Re; x_Im[i] = temp_Im; } k = N/2; while( k


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required