# [SciPy-User] Help with fast fourier transform

Warren Weckesser warren.weckesser@enthought....
Thu Apr 29 20:46:08 CDT 2010

```Oscar Gerardo Lazo Arjona wrote:
> Hello! I'm new to this mailing list and to numpy in general.
> I need to calculate fft for my optics class. But I'm having trouble.
>
> This is the code I'm using (commented):
>
> import pylab
> import numpy as np
>
> def g(x):
>    if x>450 and x<550:
>        return 1
>    else:
>        return 0
>       f=[g(x) for x in range(0,1000)]
> f=np.array(f)
>
> #this funtion can be ploted as
> #http://i41.tinypic.com/k0shnk.png
> #which is a step function "centered" at 500
>
>
> F=np.fft.fft(f)
> #when calculate the fft of f i get an array of complex numbers
> #whose absolute value can be ploted as
> #http://i40.tinypic.com/1zcecxx.png
>
> #But that is not the desired output.
> #Instead of that i expect something that can be ploted like this
> #http://i39.tinypic.com/1zmch0g.png
>
>
> #what i think must be happening because my function f
> #has an offset of 500 (it's supposed to be centereed at 500)
>
> #So i think it all reduces to two options:
> #somehow telling fft to consider the origin at 500
> #(indicate thetell the offset)
>
> #Or make fft accept a list of points like
> #[[-2,0],[-1,1],[0,1],[1,1],[2,0]]
> #so that it can know the position of the step relative to the origin
>
>

Take a look at the functions numpy.fft.fftshift and numpy.fft.fftfreq.

The attached script shows an example.

Warren

> Oscar
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: fft_example.py
Url: http://mail.scipy.org/pipermail/scipy-user/attachments/20100429/4e592f46/attachment.pl
```