Skip to content

Commit e1cc062

Browse files
author
Thomas Schucker
committed
Updated fft library names and added ifft function.
1 parent 193ff7a commit e1cc062

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

teaandtechtime_fft.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,27 +55,34 @@
5555
__version__ = "0.0.0-auto.0"
5656
__repo__ = "https://github.com/tschucker/Teaandtechtime_CircuitPython_FFT.git"
5757

58-
59-
def cpy_fft(x):
58+
def fft(x):
6059
N = len(x)
6160
if N <= 1: return x
62-
even = cpy_fft(list(islice(x,0,N,2)))
63-
odd = cpy_fft(list(islice(x,1,N,2)))
61+
even = fft(list(islice(x,0,N,2)))
62+
odd = fft(list(islice(x,1,N,2)))
6463
T = [cos(2*pi*k/N)*odd[k].real+sin(2*pi*k/N)*odd[k].imag + (cos(2*pi*k/N)*odd[k].imag-sin(2*pi*k/N)*odd[k].real)*1j for k in range(N//2)]
6564
return [even[k].real + T[k].real + (even[k].imag + T[k].imag)*1j for k in range(N//2)] + \
6665
[even[k].real - T[k].real + (even[k].imag - T[k].imag)*1j for k in range(N//2)]
6766

68-
def cpy_abs(x):
67+
def cmplx_abs(x):
6968
return sqrt(pow(x.real,2) + pow(x.imag,2))
7069

71-
def spectro(x):
72-
freq = cpy_fft(x)
70+
def spectrogram(x):
71+
freq = fft(x)
7372
temp_list = []
7473
for f in freq:
75-
abs_val = cpy_abs(f)
74+
abs_val = cmplx_abs(f)
7675
if abs_val != 0.0:
7776
temp_list.append(int(log(abs_val)))
7877
else:
7978
temp_list.append(0)
80-
8179
return temp_list
80+
81+
def ifft(x):
82+
for s in x:
83+
s = (s.imag + s.real*1j)
84+
temp = fft(x)
85+
for s in temp:
86+
s = (s.imag + s.real*1j)/float(len(x))
87+
return temp
88+

0 commit comments

Comments
 (0)