Sono nuovo nell'elaborazione del segnale e specialmente in FFT, quindi non sono sicuro di fare la cosa giusta qui e sono un po 'confuso con il risultato.
Ho una funzione reale discreta (dati di misurazione) e voglio impostare un filtro passa basso su quello. Lo strumento preferito è Python con il pacchetto numpy. Seguo questa procedura:
- calcola il fft della mia funzione
- tagliare le alte frequenze
- eseguire il fft inverso
Ecco il codice che sto usando:
import numpy as np
sampling_length = 15.0*60.0 # measured every 15 minutes
Fs = 1.0/sampling_length
ls = range(len(data)) # data contains the function
freq = np.fft.fftfreq(len(data), d = sampling_length)
fft = np.fft.fft(data)
x = freq[:len(data)/2]
for i in range(len(x)):
if x[i] > 0.005: # cut off all frequencies higher than 0.005
fft[i] = 0.0
fft[len(data)/2 + i] = 0.0
inverse = np.fft.ifft(fft)
È questa la procedura corretta? Il risultato inverse
contiene valori complessi, che mi confondono.