diff --git a/FFT.py b/FFT.py new file mode 100644 index 0000000..45ebfb5 --- /dev/null +++ b/FFT.py @@ -0,0 +1,12 @@ +import numpy as np + + + + +def FFT(inp): + inp = np.array(inp) + out = np.fft.fft(inp) + out = [val for val in np.abs(out)] + print(out) + return out + diff --git a/__pycache__/FFT.cpython-312.pyc b/__pycache__/FFT.cpython-312.pyc new file mode 100644 index 0000000..90dfc2c Binary files /dev/null and b/__pycache__/FFT.cpython-312.pyc differ diff --git a/naive_DFT.py b/naive_DFT.py index f282378..65ae0ad 100755 --- a/naive_DFT.py +++ b/naive_DFT.py @@ -3,6 +3,8 @@ from math import sin, cos, pi, sqrt import plotly.graph_objs as go from plotly.subplots import make_subplots +from FFT import FFT + FP_acc = 1e3 INP_L = 1024 @@ -149,20 +151,19 @@ def DFT_naive_FP(inp_float, out): print("F, val_abs:",f, val_abs) out[f] = val_abs + + + def FFT_naive(inp, out): - for f in range(len(out)): - val_re = 0 - val_im = 0 - for n in range(len(inp)): - phi = 2*pi*f*n/INP_L - val_re += inp[n] * sin(phi) /INP_L - val_im += inp[n] * cos(phi) /INP_L - - val_abs = abs_f(val_re, val_im) - print("F, val_abs:",f, val_abs) - out[f] = val_abs - + fft_out = FFT(inp) + for i in range(len(fft_out)): + val = fft_out[i]/len(inp) + if (i < len(out)): + out[i] = val + else: + pass + #out.append(val) def FFT_tester(): inp = [-1 + 0.01*i + sin(2*pi*i/10) + cos(2*pi*i/20) + sin(2*pi*i/250) + sin(2*pi*i/2.001) for i in range(INP_L)]