Saya baru-baru menyadari bahwa FFT tidak sempurna. Berarti jika saya mengambil sinyal dan kemudian mengambilnya FFT, dan kemudian melakukan invers FFT, output yang dihasilkan tidak persis sama dengan input. Berikut ini gambar yang menunjukkan apa yang saya maksud:
Saya pikir gambarnya cukup jelas. Sinyal IFFT hanyalah transformasi terbalik dari "spektrum FFT" dan plot "Perbedaan" adalah perbedaan antara sinyal IFFT dan sinyal asli ( ).
Jelas ada beberapa artefak, meskipun sangat kecil. Saya ingin tahu mengapa itu terjadi. Apakah ini karena jendela yang terbatas dari transformasi fourier? Atau karena sesuatu dalam algoritma FFT?
fft
fourier-transform
dft
Kitchi
sumber
sumber
Jawaban:
Perbedaan yang Anda lihat adalah karena kesalahan numerik dalam format floating point. Semua operasi yang diperlukan untuk melakukan FFT dan FFT terbalik hanya dapat dilakukan dengan ketepatan yang terbatas dan Anda telah menunjukkan hasil akurasi yang terbatas ini di plot kanan bawah Anda.
sumber
Secara umum angka tidak dapat direpresentasikan secara tepat dalam bentuk digital. Terjadi kesalahan. Jika Anda berada di Matlab Anda dapat menulis eps pada perintah, itu memberi Anda nomor.
Kesalahan yang Anda lihat di plot Anda berada dalam kisaran yang dikembalikan oleh eps (yaitu 2 ^ (- 52)).
Meskipun Anda mengharapkan nilai nyata dalam output Anda dari IFFT Anda, Anda mungkin melihat bahwa bagian imajiner Anda tidak persis sama dengan nol. Hal yang sama.
sumber