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

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