#!/usr/bin/env python
"""
"""
import pygsl._numobj as Numeric
import pygsl.fft as fft
print fft
def complex_example_simple():
n = 16
data = Numeric.arange(n) * (2 * Numeric.pi / n)
data = Numeric.cos(data) +0j
space = fft.complex_workspace(n)
wavetable = fft.complex_wavetable(n)
print data
#data[:11] = 1.0
#data[11:] = 1.0
tmp = fft.complex_backward(data, space, wavetable)
print "tmp", tmp
#print data
#fft.complex_backward(data)
#fft.complex_inverse(data)
def complex_example():
n = 630
space = fft.complex_workspace(n)
wavetable = fft.complex_wavetable(n)
print space.get_type()
print wavetable.get_type()
print wavetable.get_factors()
data = Numeric.zeros((630,), Numeric.Complex)
data[:11] = 1.0
data[11:] = 1.0
d = data[:]
fft.complex_forward(data, space, wavetable)
def real_example_simple1():
n = 32
data = Numeric.cos(1*(Numeric.arange(n) * (2 * Numeric.pi / n))).astype(Numeric.Float32)
print data
result = fft.real_transform_float(data)
print result
#result = fft.halfcomplex_unpack_float(result)
#print result
def real_example_simple():
n = 1024*1024
data = Numeric.zeros((n,), Numeric.Int)
data[n/3:2*n/3] = 1
result = fft.real_transform(data)
#print "Nyqusit ->", result[0]
result[11:] = 0
final = fft.halfcomplex_inverse(result, n)
#print final
return
import Gnuplot
g = Gnuplot.Gnuplot()
g.plot(Gnuplot.Data(data, with='line'),
Gnuplot.Data(final, with='linespoints'),)
raw_input()
def halfcomplex_radix2_unpack():
n = 32
a = Numeric.arange(n)
c = Numeric.zeros((n,))
c[1:n/2+1]=a[1::2]
c[n/2+1:]=a[-2:1:-2]
print c
print fft.halfcomplex_radix2_unpack(c)
def doc():
help(fft)
if __name__ == '__main__':
import pygsl
pygsl.set_debug_level(0)
complex_example_simple()
complex_example()
real_example_simple()
real_example_simple1()
halfcomplex_radix2_unpack()
#doc()
syntax highlighted by Code2HTML, v. 0.9.1