Apakah ada aplikasi praktis untuk melakukan transformasi Fourier ganda? ... atau transformasi Fourier terbalik pada input domain waktu?

11

Dalam matematika Anda dapat mengambil turunan ganda, atau integral ganda dari suatu fungsi. Ada banyak kasus di mana melakukan model turunan ganda situasi dunia nyata yang praktis, seperti menemukan percepatan objek.

Karena transformasi Fourier mengambil sinyal nyata atau kompleks sebagai input, dan menghasilkan sinyal kompleks sebagai output, tidak ada yang menghentikan Anda dari mengambil output itu dan menerapkan transformasi Fourier untuk kedua kalinya ... Apakah ada kegunaan praktis untuk melakukan ini? Apakah itu membantu memodelkan beberapa situasi dunia nyata yang kompleks?

Dengan logika yang sama, tidak ada yang akan menghentikan Anda dari mengambil transformasi Fourier terbalik dari sinyal input domain waktu asli Anda ... apakah ini pernah berguna? Mengapa atau mengapa tidak?

tjwrona1992
sumber

Jawaban:

9

"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.

data, FFT terbalik ganda dan kesalahan

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.x01e6

xk+1=Re(f(f(f(f(xk)))))
fmax|xkx0|

data, empat kali lipat FFT dan kesalahan maksimum pada iterasi

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:

Laurent Duval
sumber
1
Saya benar-benar menyukai jawaban ini dan saya akan menandainya sebagai jawaban yang diterima tetapi saya pikir apa yang akan dicari oleh sebagian besar orang yang datang ke pertanyaan ini adalah informasi teoretis yang diberikan Matt dalam tautan. +1 meskipun untuk jawaban yang bagus.
tjwrona1992
1
Saya sangat menghargai komentar Anda. Namun saya telah memperbarui jawaban dengan angka yang sesuai, untuk menunjukkan bahwa kesalahan dalam implementasi Fourier diskrit penting.
Laurent Duval
17

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.

Matt L.
sumber
4
Anda baru saja meniup pikiran saya secara rekursif.
tjwrona1992
Apakah saya menggambarkan apa yang Matt. L berkata tetapi dalam 2D ​​dengan kode saya? yaitu kita mendapatkan f (-x, -y).
Machupicchu
@Machupicchu, ya itu terlihat benar.
tjwrona1992
haha maka Anda dapat memilih iklan jawaban saya yang paling atas ^^ (ia memiliki 53K perwakilan sehingga tidak ada bedanya untuknya haha)
Machupicchu
Tepat setelah saya mengatakan bahwa saya menyadari bahwa mungkin ada cara yang lebih mudah daripada transformasi Fourier ganda ke waktu membalikkan sinyal haha
tjwrona1992
16

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.

leftaroundabout
sumber
2
Juga, ada cepstrum , transformasi Fourier terbalik dari logaritma Fourier transform. Dapat digunakan untuk mendeteksi sinyal periodik.
Olli Niemitalo
12

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:II(x,y)=zxy

https://ch.mathworks.com/help/matlab/ref/fft2.html

Coba ini:

x=imread('cameraman.tif');
X=fft2(fft2(x));
imagesc(abs(X));

dan bandingkan dengan:

x=imread('cameraman.tif');
X= ifft2(fft2(x));
imagesc(abs(X));

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 ().

masukkan deskripsi gambar di sini

Saya juga melakukannya untuk sinyal 1D (misalnya temporal):

masukkan deskripsi gambar di sini

Machu Picchu
sumber
Saya sadar ada yang namanya transformasi Fourier 2D, tapi itu tidak sama dengan mengambil sinyal input dan menjalankannya melalui algoritme lalu mengambil output dari proses tersebut dan menjalankannya lagi.
tjwrona1992
1
Transformasi Fourier dapat dipisahkan.
Machupicchu
Pertanyaan saya juga akan berlaku untuk transformasi Fourier 2D. Secara teori Anda dapat mengambil sinyal input 2D, menerapkan transformasi Fourier 2D, kemudian mengambil sinyal output 2D dan menggunakannya sebagai input dan menerapkan transformasi Fourier 2D lagi.
tjwrona1992
lihat di Matlab apa yang terjadi jika Anda melakukan hal berikut: lih. Saya memperbarui jawaban saya
Machupicchu
1
Saya akan menyarankan Anda untuk menggunakan bagian yang sebenarnya alih-alih nilai absolut
Laurent Duval
6

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.

diagram pemancar OFDM

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

Propagasi multipath seperti itu dapat membuat null spektral yang dalam pada passband frekuensi dari sinyal radio yang diterima karena gangguan destruktif dari dua salinan sinyal yang tiba pada waktu yang sedikit berbeda. Nol dalam OFDM dapat mengeluarkan satu atau lebih subcarrier. Nol yang sama dalam QAM single-carrier mungkin menjatuhkan lambang simbol yang berdekatan secara berurutan, tergantung pada pola data tertentu pada saat itu. Dalam kasus ekstrim, kehilangan perolehan sinyal bahkan mungkin terjadi. Kemudian turun ke kekuatan FEC untuk memulihkan urutan data asli.

myeslf
sumber
Wow ini sangat menarik! Terima kasih! :)
tjwrona1992
1

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. "

tjwrona1992
sumber