implemented FFT wrapper in naive_DFT.py. It imports FFT func from FFT.py and calculates data throw it
This commit is contained in:
12
FFT.py
Normal file
12
FFT.py
Normal file
@ -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
|
||||||
|
|
||||||
BIN
__pycache__/FFT.cpython-312.pyc
Normal file
BIN
__pycache__/FFT.cpython-312.pyc
Normal file
Binary file not shown.
25
naive_DFT.py
25
naive_DFT.py
@ -3,6 +3,8 @@ from math import sin, cos, pi, sqrt
|
|||||||
import plotly.graph_objs as go
|
import plotly.graph_objs as go
|
||||||
from plotly.subplots import make_subplots
|
from plotly.subplots import make_subplots
|
||||||
|
|
||||||
|
from FFT import FFT
|
||||||
|
|
||||||
FP_acc = 1e3
|
FP_acc = 1e3
|
||||||
|
|
||||||
INP_L = 1024
|
INP_L = 1024
|
||||||
@ -149,20 +151,19 @@ def DFT_naive_FP(inp_float, out):
|
|||||||
print("F, val_abs:",f, val_abs)
|
print("F, val_abs:",f, val_abs)
|
||||||
out[f] = val_abs
|
out[f] = val_abs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def FFT_naive(inp, out):
|
def FFT_naive(inp, out):
|
||||||
for f in range(len(out)):
|
fft_out = FFT(inp)
|
||||||
val_re = 0
|
for i in range(len(fft_out)):
|
||||||
val_im = 0
|
val = fft_out[i]/len(inp)
|
||||||
for n in range(len(inp)):
|
if (i < len(out)):
|
||||||
phi = 2*pi*f*n/INP_L
|
out[i] = val
|
||||||
val_re += inp[n] * sin(phi) /INP_L
|
else:
|
||||||
val_im += inp[n] * cos(phi) /INP_L
|
pass
|
||||||
|
#out.append(val)
|
||||||
val_abs = abs_f(val_re, val_im)
|
|
||||||
print("F, val_abs:",f, val_abs)
|
|
||||||
out[f] = val_abs
|
|
||||||
|
|
||||||
|
|
||||||
def FFT_tester():
|
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)]
|
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)]
|
||||||
|
|||||||
Reference in New Issue
Block a user