Tôi chưa quen với việc xử lý tín hiệu và đặc biệt là FFT, do đó tôi không chắc liệu mình có đang làm đúng hay không và tôi hơi bối rối với kết quả này.
Tôi có một hàm thực rời rạc (dữ liệu đo lường) và muốn thiết lập bộ lọc thông thấp trên đó. Công cụ được lựa chọn là Python với gói numpy. Tôi làm theo thủ tục này:
- tính toán fft của hàm của tôi
- cắt tần số cao
- thực hiện nghịch đảo fft
Đây là mã mà tôi đang sử dụng:
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)
Đây có phải là thủ tục chính xác? Kết quả inverse
chứa các giá trị phức tạp, làm tôi bối rối.