Artefak dalam FFT


10

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:FFT tidak selalu berhasil

Saya pikir gambarnya cukup jelas. Sinyal IFFT hanyalah transformasi terbalik dari "spektrum FFT" dan plot "Perbedaan" adalah perbedaan antara sinyal IFFT dan sinyal asli ( ).IFFT - Original

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?

10161015


4
Semua matematika presisi terbatas memiliki kesalahan ini, bukan hanya FFT.
endolith

Jawaban:


16

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.


Apakah akan ada situasi di mana kesalahan ini bisa meledak melebihi presisi floating point?
Kitchi

6
1016253

@Kitchi: ya, ada banyak situasi di mana kesalahan numerik bisa menjadi masalah besar, bahkan dalam format floating point. Pembalikan matriks akan menjadi salah satu dari banyak contoh. Itu semua ada hubungannya dengan nomor kondisi .
Matt L.

1
@MattL. - Hebat! Terima kasih untuk referensi.
Kitchi

7

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.

EPS, tanpa argumen, adalah jarak dari 1.0 ke angka presisi ganda lebih besar berikutnya, yaitu EPS = 2 ^ (- 52).

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.