"Apakah ada aplikasi praktis?" Jelas ya, setidaknya untuk memeriksa kode, dan kesalahan terikat.
"Dalam teori, teori, dan pertandingan praktik. Dalam praktik, mereka tidak." Jadi, secara matematis, tidak, seperti dijawab oleh Matt. Karena (seperti yang sudah dijawab), (hingga potensi faktor penskalaan). Namun, ini bisa bermanfaat secara komputasi, karena persamaan di atas biasanya diimplementasikan melalui transformasi Fourier diskrit, dan avatar cepatnya, FFT.F(F(x(t)))=x(−t)
Alasan pertama muncul dari keinginan untuk memeriksa bahwa implementasi Fourier, apakah dikodekan oleh Anda, orang lain atau dari perpustakaan, melakukan apa yang harus dilakukan pada data Anda. Pemesanan sampel, faktor penskalaan, batasan pada tipe input (kenyataan, kedalaman bit) atau panjang adalah sumber kesalahan potensial berikutnya untuk implementasi Fourier seperti FFT. Jadi sebagai pemeriksaan kewarasan, selalu baik untuk memeriksa bahwa versi yang diimplementasikan mewarisi, setidaknya sekitar, properti teoritis. Seperti yang akan Anda lihat, seperti yang ditunjukkan oleh Machupicchu, Anda tidak dapat memulihkan input nyata yang dibalik: sering kali, bagian imajiner tidak persis nol, dan bagian nyata adalah apa yang diharapkan, tetapi dalam kesalahan relatif kecil, karena perhitungan komputer yang tidak sempurna (titik mengambang) dalam toleransi yang bergantung pada mesin. Ini dibuat terlihat pada gambar berikut. FFT diterapkan dua kali pada sinyal 32 sampel acak, dan dibalik. Seperti yang Anda lihat, kesalahannya kecil, menggunakan pelampung presisi ganda.
Jika kesalahannya relatif tidak kecil, maka mungkin ada kesalahan dalam kode yang Anda gunakan.
Yang kedua berkaitan dengan volume data yang sangat besar atau jumlah besar perhitungan FFT iterated, seperti dengan tomografi. Di sana, kesalahan relatif kecil sebelumnya dapat menumpuk dan menyebar, dan bahkan menyebabkan perbedaan komputasi atau kesalahan beberapa detail di sini . Ini dibuat terlihat pada gambar berikut. Untuk sinyal tidak terlalu lama ( sampel ), kami melakukan iterasi berikut:
mana menunjukkan FFT. Gambar yang ditampilkan adalah subsampled. Dan kami menghitung kesalahan maksimumdi setiap iterasi.x01e6xk+1=Re(f(f(f(f(xk)))))
fmax|xk−x0|
Seperti yang Anda lihat, urutan besarnya kesalahan telah berubah, karena ukuran sinyal. Plus, kesalahan maksimum terus meningkat. Setelah iterasi tetap cukup kecil. Tetapi Anda dapat menebaknya, dengan -voxel cube, dan jutaan iterasi, kesalahan ini mungkin menjadi tidak dapat diabaikan.10001000×1000×1000
Membatasi kesalahan, dan mengevaluasi perilakunya di atas iterasi dapat membantu mendeteksi perilaku tersebut, dan mengurangi kemudian dengan ambang batas yang tepat atau pembulatan.
Informasi tambahan:
Tidak, mengambil transformasi Fourier dua kali setara dengan inversi waktu (atau inversi dari dimensi apa pun yang Anda masuki). Anda hanya mendapatkan kali konstanta yang tergantung pada jenis penskalaan yang Anda gunakan untuk transformasi Fourier.x(−t)
Transformasi Fourier terbalik diterapkan pada sinyal domain waktu hanya memberikan spektrum dengan inversi frekuensi. Lihat jawaban ini untuk detail lebih lanjut.
sumber
Sementara mengambil Transformasi Fourier langsung dua kali berturut-turut hanya memberi Anda sepele waktu-inversi yang akan jauh lebih murah untuk melaksanakan tanpa FT, ada adalah hal-hal berguna yang bisa dilakukan dengan mengambil Fourier transform, menerapkan beberapa operasi lain, dan kemudian lagi Fourier mengubah hasil itu. Contoh paling terkenal adalah autokorelasi , yang merupakan semacam konvolusi sinyal dengan dirinya sendiri. Dan konvolusi adalah O ( n 2 ) jika diimplementasikan secara naif, tetapi hanya O ( n · log n) ketika mengambil jalan memutar melalui transformasi Fourier. Jadi autokorelasi umumnya dilakukan dengan FT'ing sinyal, mengambil kuadrat-absolut, dan IFT-ing itu kembali ke domain waktu.
sumber
2D Fourier transform (2D DFT) digunakan dalam pemrosesan gambar karena gambar dapat dilihat sebagai sinyal 2D. Misalnya untuk gambar skala abu-abu , , itu berarti bahwa pada koordinat dan gambar memiliki nilai intensitas z. Lihat ini misalnya:I I(x,y)=z x y
https://ch.mathworks.com/help/matlab/ref/fft2.html
Coba ini:
dan bandingkan dengan:
agak seperti itu. Saya menerapkan fft2 kali, bukan ifft2 kedua kalinya. Saya pikir ini menggambarkan apa yang dikatakan @Matt L.:
"Mengambil transformasi Fourier dua kali setara dengan inversi waktu",
Anda dapat melihat gambar terbalik karena -i negatif imajiner bukan positif di ifft ().
Saya juga melakukannya untuk sinyal 1D (misalnya temporal):
sumber
Untuk menjawab pertanyaan kedua, dalam komunikasi digital ada teknik yang digunakan dalam telepon seluler saat ini yang memanfaatkan penerapan IFFT pada sinyal domain waktu. OFDM menerapkan IFFT ke urutan waktu-domain data pada pemancar, kemudian membalikkannya dengan FFT di penerima. Sementara literatur suka menggunakan IFFT-> FFT, itu benar-benar tidak membuat perbedaan mana yang lebih dulu.
Manfaat utama di sini sangat terkait dengan jawaban leftaroundabout. Ada jenis distorsi yang disebut multipath fading , dan ponsel di daerah perkotaan yang padat harus berurusan dengan banyak hal. Kami ingin memodelkan multipath fading sebagai konvolusi dengan koefisien yang tidak diketahui. Karena rantai kejadian terlihat seperti IFFT-> Transmit-> Apply multipath-> Receive-> FFT, multipath fading akan melewati FFT dan menjadi perkalian titik-demi-titik sederhana dengan nilai yang tidak diketahui. Nilai-nilai ini jauh lebih mudah untuk diprediksi dan diperbaiki daripada koefisien konvolusi.
Efek ini juga membuat sinyal lebih tangguh terhadap multipath / fading yang dapat menghilangkan (atau "null") seluruh saluran frekuensi. Artikel ini menjelaskan caranya
sumber
Informasi ini disediakan oleh pengguna "Birdwes", tetapi ia tidak memiliki reputasi yang cukup untuk mempostingnya sendiri sehingga saya akan mempostingnya di sini untuknya karena tampaknya relevan dan berguna.
"Saya tidak memiliki cukup poin di forum ini untuk menambahkan komentar, jadi saya melakukannya di sini: lihat kode sumber untuk Accord.Math Hilbert Transform dan Anda akan melihat mengapa ini bisa menjadi opsi yang layak: https: //github.com/primaryobjects/Accord.NET/blob/master/Sources/Accord.Math/Transforms/HilbertTransform.cs
Penggunaan praktis termasuk membangun pemancar SSB, atau hampir semua rencana modulasi. Lihat modulasi IQ dan Anda akan melihat mengapa perubahan fase -90 derajat relevan. Produk dari prinsip trigonometri. mis. https://user.eng.umd.edu/~tretter/commlab/c6713slides/ch7.pdf
Transformasi Hilbert menggunakan langkah tengah antara FFT untuk menghilangkan komponen negatif. Anda dapat menyalahgunakannya untuk memfilter frekuensi lain juga. "
sumber