Çift Fourier dönüşümü yapmak için pratik bir uygulama var mı? … Ya da zaman alanı girdisinde ters Fourier dönüşümü mü?


11

Matematikte bir fonksiyonun çift türevini veya çift integralini alabilirsiniz. Bir çift türev modelin gerçekleştirilmesinde, bir nesnenin ivmesini bulmak gibi pratik bir gerçek dünya durumunun olduğu birçok durum vardır.

Fourier dönüşümü giriş olarak gerçek veya karmaşık bir sinyal aldığından ve çıkış olarak karmaşık bir sinyal ürettiğinden, bu çıkışı almanızı ve Fourier dönüşümünü ikinci kez uygulamanızı engelleyen hiçbir şey yoktur ... bu? Bazı karmaşık gerçek dünya durumlarının modellenmesine yardımcı olur mu?

Aynı mantıkla, hiçbir şey orijinal zaman alanı giriş sinyalinizin ters Fourier dönüşümünü almanızı engelleyemez ... bu hiç yararlı olur mu? Neden ya da neden olmasın?

Yanıtlar:


9

"Pratik bir uygulama var mı?" Kesinlikle evet, en azından kodu ve bağlı hataları kontrol etmek.

"Teoride, teori ve pratik uyuşuyor. Pratikte, uymuyorlar." Mat, cevap olarak matematiksel olarak hayır. Çünkü (daha önce yanıtlandığı gibi), F(F(x(t)))=x(-t) (potansiyel bir ölçeklendirme faktörüne kadar). Bununla birlikte, hesaplamada yararlı olabilir, çünkü yukarıdaki denklem genellikle ayrık Fourier dönüşümü ve hızlı avatarı FFT aracılığıyla uygulanır.

İlk neden, Fourier uygulamasının sizin tarafınızdan, bir başkası veya bir kütüphane tarafından kodlanmış olsun, verilerinizde ne yapması gerektiğini kontrol etme isteğinden kaynaklanmaktadır. Örnek sıralama, ölçeklendirme faktörleri, giriş tipi (gerçeklik, bit derinliği) veya uzunluk üzerindeki sınırlar, FFT gibi Fourier uygulamaları için olası sonraki hataların kaynaklarıdır. Bir sağlık kontrolü olarak, uygulanan sürümlerin en azından yaklaşık olarak teorik özellikleri miras aldığını kontrol etmek her zaman iyidir. Göreceğiniz gibi, Machupicchu tarafından gösterildiği gibi, tam olarak tersine çevrilmiş gerçek bir girişi kurtarmazsınız: genellikle, hayali kısım tam olarak sıfır değildir ve gerçek kısım beklenen şeydir, ancak kusurlu bilgisayar hesaplamaları nedeniyle küçük bir göreceli hata içinde (kayan nokta) makineye bağlı tolerans dahilinde. Bu, aşağıdaki resimde görülebilir. FFT rasgele 32 örnek sinyaline iki kez uygulanır ve ters çevrilir. Gördüğünüz gibi, hata çift hassas şamandıralar kullanarak küçük.

veri, çift ters FFT ve hata

Hata nispeten küçük değilse, kullandığınız kodda hatalar olabilir.

İkincisi, tomografi gibi büyük veri hacimleri veya büyük miktarlarda yinelenen FFT hesaplamaları ile ilgilidir. Burada, önceki küçük göreceli hatalar birikebilir ve yayılabilir ve hatta burada bazı ayrıntıları hesaplama farklılıkları veya hataları indükleyebilir . Bu, aşağıdaki resimde görülebilir. Çok uzun olmayan bir sinyal x0 ( 1e6 numune) için, aşağıdaki tekrarlamaları gerçekleştiririz:

xk+1=R,e(f(f(f(f(xk)))))
buradafmaksimum|xk-x0|

verileri, dört kat FFT'si ve yinelemelerdeki maksimum hatalar

Gördüğünüz gibi, sinyalin büyüklüğü nedeniyle hatanın büyüklük sırası değişti. Ayrıca, maksimum hata sürekli olarak artar. yinelemeden sonra yeterince küçük kalır. Ancak, voksel küp ve milyonlarca yineleme ile bu hatanın ihmal edilemeyebileceğini tahmin edebilirsiniz.10001000x1000x1000

Hatayı sınırlamak ve yinelemeler üzerindeki davranışını değerlendirmek, bu tür davranışların algılanmasına yardımcı olabilir ve daha sonra uygun eşikleme veya yuvarlama ile azaltabilir.

Ek bilgi:


1
Bu cevabı gerçekten çok seviyorum ve kabul edilen cevap olarak işaretlerdim ama bu soruya gelen insanların çoğunun arayacağı şey Matt'in bağlantıda sağladığı teorik bilgiler olduğunu düşünüyorum. Harika bir cevap için +1 olsa.
tjwrona1992

1
Yorumunuzu gerçekten takdir ediyorum. Bununla birlikte, ayrık Fourier uygulamalarındaki hataların önemli olduğunu göstermek için cevabı uygun rakamlarla güncelledim.
Laurent Duval

17

Hayır, Fourier dönüşümünü iki kez almak zaman tersine (veya içinde bulunduğunuz boyutun tersine) eşdeğerdir. Sadece almak Fourier dönüşümü için kullandığınız ölçekleme türüne bağlıdır sabit kez.x(-t)

Bir zaman alanı sinyaline uygulanan ters Fourier dönüşümü, spektruma frekans inversiyonu verir. Daha fazla ayrıntı için bu cevaba bir göz atın .


4
Sadece aklımı tekrarladın.
tjwrona1992

Mat. L dedim ama benim kod ile 2D? yani f (-x, -y) elde ederiz.
Machupicchu

@Machupicchu, evet doğru görünüyor.
tjwrona1992

haha o zaman benim cevap reklamı üst bir seçebilirsiniz ^ ^ (o 53K temsilcisi var, bu yüzden onun için herhangi bir fark yapmaz haha)
Machupicchu

Hemen sonra, bir sinyali tersine çevirmek için çift Fourier dönüşümünden daha kolay yolların olduğunu anladığımı söyledikten sonra haha
tjwrona1992

16

Fourier dönüşümü alarak iken doğrudan sadece size FT olmadan uygulanması çok daha ucuz olurdu önemsiz bir zaman inversion veren arka arkaya iki kez, orada olduğunu yine o başka bir işlemi uygulayarak, bir Fourier Dönüşümü alınarak yapılır ve edilebilmektedir yararlı şeyler Fourier bunun sonucunu değiştiriyor. En iyi bilinen örnek otokorelasyon bir tür, kıvrım kendisi ile bir sinyalin. Ve kıvrımlar saf bir şekilde uygulanırsa O ( n 2 ) 'dir, ancak sadece O ( n · log n) Fourier dönüşümü yoluyla dolambaçlı yoldan giderken. Dolayısıyla, otokorelasyon genellikle bir sinyali FT'ing, mutlak kare alarak ve bunu zaman alanına geri döndürerek yapılır.


2
Ayrıca, Fourst dönüşümü logaritmasının ters Fourier dönüşümü olan cepstrum vardır . Periyodik sinyalleri tespit etmek için kullanılabilir.
Olli Niemitalo

12

benben(x,y)=zxy

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

Bunu dene:

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

ve karşılaştır:

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

bunun gibi. İkinci kez ifft2 yerine fft2'yi defalarca uyguladım. Sanırım bu @ L. L.'nin söylediğini gösteriyor:

"Fourier dönüşümünü iki kez almak zaman tersine çevirmeye eşdeğerdir",

ifft () içinde pozitif yerine -i hayali negatif nedeniyle görüntünün ters çevrildiğini görebilirsiniz.

resim açıklamasını buraya girin

Ayrıca 1D sinyali (örneğin geçici) için yaptım:

resim açıklamasını buraya girin


2D Fourier dönüşümü gibi bir şey olduğunun farkındayım, ancak bu bir giriş sinyali alıp algoritma yoluyla çalıştırmak ve daha sonra bu çalışmanın çıktısını almak ve tekrar çalıştırmakla aynı şey değil.
tjwrona1992

1
Fourier dönüşümü ayrılabilir.
Machupicchu

Benim sorum 2D Fourier dönüşümü için de geçerli. Teorik olarak bir 2D giriş sinyali alabilir, 2D Fourier dönüşümünü uygulayabilir, ardından 2D çıkış sinyalini alabilir ve bir giriş olarak kullanabilir ve 2D Fourier dönüşümünü tekrar uygulayabilirsiniz.
tjwrona1992

Aşağıdakileri yaparsanız Matlab'a bakın: cf. Cevabımı güncelledim
Machupicchu

1
Mutlak değer yerine gerçek kısmı kullanmanızı öneririm
Laurent Duval

6

İkinci soruyu cevaplamak için, dijital iletişimde şu anda cep telefonlarında kullanılan ve IFFT'yi bir zaman alanı sinyaline uygulamayı iyi kullanan bir teknik var . OFDM , vericideki zaman alanı veri dizisine bir IFFT uygular, daha sonra bunu alıcıda bir FFT ile tersine çevirir. Literatür IFFT-> FFT kullanmaktan hoşlanırken, hangisinin önce geldiği gerçekten fark etmez.

OFDM vericisi diyagramı

Buradaki en önemli fayda, leftaroundabout'un cevabı ile büyük ölçüde ilgilidir. Çok yollu solma olarak adlandırılan bir tür bozulma vardır ve yoğun kentsel alanlardaki cep telefonları bununla başa çıkmak zorundadır. Çok yollu solmayı bilinmeyen katsayılara sahip bir evrişim olarak modellemeyi seviyoruz. Olaylar zinciri IFFT-> Transmit-> Apply multipath-> Receive-> FFT gibi bir şeye benzediğinden, çok yollu solma FFT'den geçecek ve bilinmeyen değerlerle basit bir noktadan çarpma haline gelecektir. Bu değerleri tahmin etmek ve düzeltmek, evrişim katsayılarından çok daha kolaydır.

Bu efekt aynı zamanda, bir frekans kanalının tamamını alabilen (veya "boş") bir çoklu yol / solmaya karşı sinyali daha esnek hale getirir. Bu makalede ,

Bu tür çok yollu yayılım, alınan radyo sinyallerinin frekans geçiş bandında, biraz farklı zamanlarda gelen sinyalin iki kopyasının yıkıcı paraziti nedeniyle derin spektral null'lar oluşturabilir. OFDM'deki bir null değeri bir veya daha fazla alt taşıyıcı alabilir. Tek taşıyıcılı QAM'deki aynı null, o andaki spesifik veri modeline bağlı olarak ardışık olarak bitişik sembollerin patlamasına neden olabilir. Aşırı durumlarda, sinyal alımının kaybı bile mümkündür. Daha sonra orijinal veri dizisini kurtarmak için FEC'in gücüne iner.


Vay be bu inanılmaz ilginç! Teşekkürler! :)
tjwrona1992

1

Bu bilgi "Birdwes" kullanıcısı tarafından sağlandı, ancak kendisini göndermek için yeterli bir üne sahip değildi, bu yüzden burada onun için göndereceğim, çünkü ilgili ve yararlı görünüyor.

"Bu forumda yorum eklemek için yeterli puanım yok, bu yüzden burada yapıyorum: Accord.Math Hilbert Transform için kaynak koduna bir göz atın ve bunun neden uygun bir seçenek olabileceğini göreceksiniz: https: //github.com/primaryobjects/Accord.NET/blob/master/Sources/Accord.Math/Transforms/HilbertTransform.cs

Pratik kullanımlar arasında SSB vericileri oluşturma veya neredeyse tüm modülasyon planları bulunur. IQ modülasyonuna bakın ve -90 derecelik faz kaymasının neden önemli olduğunu göreceksiniz. Trigonometrik prensiplerin bir ürünü. örn. https://user.eng.umd.edu/~tretter/commlab/c6713slides/ch7.pdf

Hilbert Dönüşümü, negatif bileşenlerin sıfırlanması için FFT'ler arasında orta bir adım kullanır. Diğer frekansları da filtrelemek için kötüye kullanabilirsiniz. "

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.