Skip to content

Commit 193ff7a

Browse files
author
Thomas Schucker
committed
Updated fft to use complex numbers.
1 parent 027ddcc commit 193ff7a

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

teaandtechtime_fft.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
# imports
5151
from math import pi, sin, cos, sqrt, pow, log
5252
from adafruit_itertools import islice, count
53+
import array
5354

5455
__version__ = "0.0.0-auto.0"
5556
__repo__ = "https://github.com/tschucker/Teaandtechtime_CircuitPython_FFT.git"
@@ -60,12 +61,12 @@ def cpy_fft(x):
6061
if N <= 1: return x
6162
even = cpy_fft(list(islice(x,0,N,2)))
6263
odd = cpy_fft(list(islice(x,1,N,2)))
63-
T = [(cos(2*pi*k/N)*odd[k][0]+sin(2*pi*k/N)*odd[k][1], cos(2*pi*k/N)*odd[k][1]-sin(2*pi*k/N)*odd[k][0]) for k in range(N//2)]
64-
return [(even[k][0] + T[k][0], even[k][1] + T[k][1]) for k in range(N//2)] + \
65-
[(even[k][0] - T[k][0] , even[k][1] - T[k][1]) for k in range(N//2)]
64+
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)]
65+
return [even[k].real + T[k].real + (even[k].imag + T[k].imag)*1j for k in range(N//2)] + \
66+
[even[k].real - T[k].real + (even[k].imag - T[k].imag)*1j for k in range(N//2)]
6667

6768
def cpy_abs(x):
68-
return sqrt(pow(x[0],2) + pow(x[1],2))
69+
return sqrt(pow(x.real,2) + pow(x.imag,2))
6970

7071
def spectro(x):
7172
freq = cpy_fft(x)

0 commit comments

Comments
 (0)