On 19 May 2013 23:25, <killybear...@gmail.com> wrote: > How can i at least find a peek in FFT spectrum of a square wave ? > From there i could easily build formula. Sorry for bothering but i am new to > Python.
Are you the same person who posted the original question? You probably want to use numpy for this. I'm not sure if I understand your question but here goes: First import numpy (you may need to install this first): >>> import numpy as np Create a square wave signal: >>> x = np.zeros(50) >>> x[:25] = -1 >>> x[25:] = +1 >>> x array([-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) Compute the magnitude spectrum: >>> spect = abs(np.fft.fft(x)[:25]) >>> spect array([ 0. , 31.85194222, 0. , 10.67342282, 0. , 6.47213595, 0. , 4.69726931, 0. , 3.73254943, 0. , 3.13762901, 0. , 2.7436023 , 0. , 2.47213595, 0. , 2.28230601, 0. , 2.15105461, 0. , 2.06487174, 0. , 2.01589594, 0. ]) Find the index of the maximum element: >>> np.argmax(spect) 1 So the peak is the lowest non-zero frequency component of the DFT. In Hz this corresponds to a frequency of 1/T where T is the duration of the signal. Oscar -- http://mail.python.org/mailman/listinfo/python-list