Numeric: fromfunction() performance
jsaul
jsaul at gmx.de
Sat Oct 19 04:48:10 EDT 2002
* Travis Oliphant [2002-10-16 02:07]:
> > What I actually want is a (quicker) construct corresponding to
> >
> > for i in range(0, nf):
> > q[i] = cmath.exp(-x1*i*i -1j*i*x2)
> >
>
> i = Numeric.arange(0,nf)
> q = Numeric.exp(-x1*i*i-1j*i*x2)
Indeed! Thanks a lot, the increase in speed is very significant.
Implementing it as
i = Numeric.arange(1.*nf)
q = Numeric.exp((-x1*i-1j*x2)*i)
yields yet another ~25% performance increase by avoiding the
implicit conversion from Int to Double and one summation through
the brackets. Int32 overflow for large nf (nf>= 2**16) is also
avoided.
Thanks also to Pearu. Actually the computation forms part of a
frequency filter; the first term in the exp() corresponds to a
Gaussian, while the second results in a time shift.
Gruß, jsaul
--
Que le gusta rrrodarrr la errre.
More information about the Python-list
mailing list