I am new to python and I'm trying a python implementation of a FFT. I have been getting the above mentioned error for a while. What do i do?
import numpy
import cmath
def twiddle(r,s):
x = (cmath.exp((2*cmath.pi*1j*s)/r))
return x
def fft(signal):
n = len(signal)
if n==1:
return signal
else:
Feven=fft([signal[k] for k in range(0,n,2)])
Fodd=fft([signal[k] for k in range(1,n,2)])
for l in range (n/2):
F1 = Feven[l] + twiddle(n, -l) * Fodd[l]
F2 = Feven[l] - twiddle(n, -l) * Fodd[l]
return F1+F2
When I add print statements for Feven and Fodd, and feed in this:
print (fft([4.5, 3.4, 4.7, 3.8, 6.7, 8.0, 4.6, 7.8]))
I get:
Traceback (most recent call last):
File "FFT.py", line 41, in <module>
print (fft([4.5, 3.4, 4.7, 3.8, 6.7, 8.0, 4.6, 7.8]))
File "FFT.py", line 29, in fft
Feven=fft([signal[k] for k in range(0,n,2)])
File "FFT.py", line 34, in fft
F1 = Feven[l] + twiddler(n, -l) * Fodd[l]
TypeError: 'complex' object has no attribute '__getitem__'