ฉันใหม่กับการประมวลผลสัญญาณและโดยเฉพาะอย่างยิ่งกับ FFT ดังนั้นฉันไม่แน่ใจว่าฉันกำลังทำสิ่งที่ถูกต้องที่นี่และฉันสับสนเล็กน้อยกับผลลัพธ์
ฉันมีฟังก์ชั่นจริงที่ไม่ต่อเนื่อง (ข้อมูลการวัด) และต้องการตั้งค่าตัวกรองความถี่ต่ำผ่านในนั้น เครื่องมือที่เลือกคือ Python พร้อมแพ็คเกจ numpy ฉันทำตามขั้นตอนนี้:
- คำนวณค่า fft ของฟังก์ชั่นของฉัน
- ตัดความถี่สูง
- ดำเนินการ fft ผกผัน
นี่คือรหัสที่ฉันใช้:
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)
นี่เป็นขั้นตอนที่ถูกต้องหรือไม่? ผลลัพธ์inverse
มีค่าที่ซับซ้อนซึ่งทำให้ฉันสับสน