[Numpy-discussion] calcul of phase (dividing by 0)

Alexandre Alexandre.Fayolle at logilab.fr
Thu Feb 10 07:27:41 EST 2005

On Thu, Feb 10, 2005 at 03:16:23PM +0100, Jean-Luc Menut wrote:
> Hello,
> I'm want to have the modulus and the phase of a fourier transform of 2D 
> array, so I use the numarray FFT to compute the FT of the array (let's 
> call it ff) and I use abs(ff) for the modulus and atan(ff.imag/ff.real) 
> for the phase.
> My problem comes when ff.real = 0, I have either inf or nan as result 
> (which is perfectly good and useful). I looking for a function which 
> replace atan(ff.imag/ff.real) by 0 when ff.real is 0.
> I'm currently using a loop, and I think it's not very good (I call this 
> function very often). Since the determination of the phase is something 
> really useful and often used, I think there is probably a lot of people 
> who had the same problem.
> So what solutions do you use?

Maybe you could try:

from Numeric import *
def phase(ff):
    return (log(ff/abs(ff))/1j).real 

>>> a = array([1, 1j,])
>>> phase(a)
array([ 0.        ,  1.57079633])

Alexandre Fayolle                              LOGILAB, Paris (France).
http://www.logilab.com   http://www.logilab.fr  http://www.logilab.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20050210/b339f54c/attachment-0001.sig>

More information about the NumPy-Discussion mailing list