Büyüklükler neden analiz (DFT) değil, sentez sırasında (IDFT) normalleştirilir?


17

Gördüğüm çoğu örnekte ve FFT kodunda, ileri DFT işleminin çıkışı (frekans büyüklükleri) N tarafından ölçeklendirilir - yani her bir frekans bölmesinin büyüklüğünü vermek yerine, size N kat büyüklüğünü verir.

Operasyonel olarak bunun nedeni, DFT'nin sinyalin iç çarpımını her bir temel sinüsle (yani normalleştirilmemiş korelasyon) alarak hesaplanmasıdır. Ancak, bu , çıktıyı iade etmeden önce neden N'ye bölmüyoruz?

Bunun yerine, çoğu algoritma yeniden sentezlenirken N'ye bölünür.

Bu bana karşı sezgisel görünüyor ve (bir şeyi kaçırmadıkça) DFT'nin tüm açıklamalarını çok kafa karıştırıcı hale getiriyor.

Hayal edebileceğim her senaryoda, gerçek büyüklük (büyüklük * N değil) bir DFT işleminden ihtiyacım olan değerdir ve normalleştirilmiş büyüklük bir IDFT işlemine girmek istediğim değerdir.

DFT neden DFT / N ve IDFT normalize büyüklükteki sinüzoidlerin basit bir toplamı olarak tanımlanmamış?


2
Dürüst olmak gerekirse bu, burada sorulan en havalı sorulardan biri.
Phonon

Yanıtlar:


9

İster DFT'nizin çıktısını ister ileri ister ters ölçeklendirin, konvansiyonla veya matematiksel olarak uygun olanla hiçbir ilgisi yoktur. DFT'nin girişi ile ilgili her şeye sahiptir. Hem ileri hem de ters dönüşüm için ölçeklemenin gerekli veya gerekli olmadığı bazı örnekleri göstermeme izin verin.

Bir ileri dönüşümü 1 / N ölçeklendirmelidir.

Başlangıç ​​olarak, basit bir sinüs dalgasını analiz etmek için, dönüşümün uzunluğunun, matematiksel olarak, alakasız olması gerektiği açık olmalıdır. Diyelim ki N = 1024, Frek = 100 ve sinyaliniz:

f (n) = cos (Frek * 2 * Pi * n / N)

1024 puntoluk bir DFT f (n) alırsanız, bin [100] = 512 olduğunu görürsünüz. Ancak, bunu N. diğer 1/2 bölmede negatif spektrumdadır [924].

DFT'nin uzunluğunu iki katına çıkarırsanız, N = 2048, çıkış değerleri 1024 nokta DFT'nin iki katı olacaktır, bu da 1 / N ile ölçeklenmediği sürece sonuçları anlamsız hale getirir. DFT'nin uzunluğu bu tür analizlerde bir faktör olmamalıdır. Bu nedenle, bu örnekte, DFT'yi 1 / N ölçeklendirmelisiniz.

İleri dönüşümü ölçeklendirmemelidir.

Şimdi 32 musluklu FIR filtresinin dürtü tepkisine sahip olduğunuzu ve frekans tepkisini bilmek istediğinizi varsayalım. Kolaylık sağlamak için, 1 kazanımlı düşük geçişli bir filtre alacağız. Bu filtre için DFT'nin DC bileşeninin 1 olması gerektiğini biliyoruz. Ve bunun boyutu ne olursa olsun, bunun böyle olacağı açık olmalıdır. DFT, çünkü DC bileşeni giriş değerlerinin toplamıdır (yani FIR katsayılarının toplamı).

Bu nedenle, bu girdi için, DFT anlamlı bir cevap almak için 1 / N ile ölçeklendirilmez. Bu nedenle, dönüşümün sonucunu etkilemeden bir dürtü yanıtını istediğiniz kadar sıfırlayabilirsiniz.

Bu iki örnek arasındaki temel fark nedir?

Cevap basit. İlk durumda, her girdi örneği için enerji sağladık. Başka bir deyişle, 1024 numunenin tümü için sinüs dalgası mevcuttu, bu nedenle DFT'nin çıktısını 1/1024 oranında ölçeklendirmemiz gerekiyordu.

İkinci örnekte, tanım gereği, sadece 1 numune için enerji sağladık (n = 0'daki dürtü). Dürtü için 32 musluk filtresinden geçmesi için 32 numune aldı, ancak bu gecikme önemsiz. 1 örnek için enerji sağladığımızdan, DFT'nin çıktısını 1 olarak ölçeklendiririz. Bir dürtü 1 yerine 2 birim enerji ile tanımlanırsa, çıktıyı 1/2 oranında ölçeklendiririz.

Ters dönüşümü ölçeklendirmemelidir.

Şimdi ters bir DFT düşünelim. İleri DFT'de olduğu gibi, enerji sağladığımız örnek sayısını da dikkate almalıyız. Tabii ki burada biraz daha dikkatli olmalıyız çünkü hem pozitif hem de negatif frekanslı kutuları uygun şekilde doldurmalıyız. Bununla birlikte, iki uygun bölmeye bir dürtü (yani 1) yerleştirirsek, ters DFT'nin sonuçta ortaya çıkan çıkışı, ters DFT'de kaç nokta kullanırsak kullanalım, genliği 2 olan bir kosinüs dalgası olacaktır.

Dolayısıyla, ileri DFT'de olduğu gibi, giriş bir dürtü ise ters DFT'nin çıktısını ölçeklendirmeyiz.

Ters dönüşümü ölçeklendirmelidir.

Şimdi bir düşük geçiş filtresinin frekans yanıtını bildiğiniz ve dürtü yanıtını almak için ters bir DFT yapmak istediğiniz durumu düşünün. Bu durumda, tüm noktalarda enerji sağladığımızdan, anlamlı bir cevap almak için DFT'nin çıktısını 1 / N ölçeklendirmeliyiz. Bu çok açık değil çünkü giriş değerleri karmaşık olacak, ancak bir örnek üzerinde çalışırsanız, bunun doğru olduğunu göreceksiniz. Eğer 1 / N ölçeklemezseniz, kazanım 1 ise, N sırasına göre en yüksek dürtü yanıtı değerlerine sahip olursunuz.

Az önce bahsettiğim dört durum, DFT çıktısının nasıl ölçeklendirileceğinin açık olduğu uç nokta örnekleridir. Ancak, uç noktalar arasında çok fazla gri alan vardır. Şimdi başka bir basit örnek ele alalım.

N = 1024, Frek = 100 ile aşağıdaki sinyale sahip olduğumuzu varsayalım:

f(n) = 6 * cos(1*Freq * 2*Pi * n/N)  n = 0 - 127
f(n) = 1 * cos(2*Freq * 2*Pi * n/N)  n = 128 - 895
f(n) = 6 * cos(4*Freq * 2*Pi * n/N)  n = 896 - 1023

Zaman Alanı

Üç bileşen için genlik, frekans ve süre farklılıklarına dikkat edin. Ne yazık ki, bu sinyalin DFT'si, 2. bileşenin diğer ikisinin güç seviyesinin 1 / 36'sına sahip olmasına rağmen, üç bileşenin hepsini aynı güç düzeyinde gösterecektir.

Penceresiz Frek Alanı

Üç bileşenin de aynı miktarda enerji sağlaması açıktır, bu da DFT sonuçlarını açıklar, ancak burada yapılması gereken önemli bir nokta vardır.

Çeşitli frekans bileşenlerinin süresini bilirsek, çeşitli frekans kutularını buna göre ölçeklendirebiliriz. Bu durumda, DFT'nin çıktısını doğru bir şekilde ölçeklemek için bunu yaparız: bin [100] / = 128; kutu [200] / = 768; kutu [400] / = 128;

Bu da beni son noktama getiriyor; genel olarak, DFT girişimizde belirli bir frekans bileşeninin ne kadar süreyle mevcut olduğu hakkında hiçbir fikrimiz yoktur, bu nedenle bu tür bir ölçeklendirme yapamayız. Bununla birlikte, genel olarak, her numune noktası için enerji tedarik ediyoruz, bu yüzden bir sinyali analiz ederken ileri DFT'yi 1 / N ölçeklendirmeliyiz.

Sorunları karmaşıklaştırmak için, DFT'nin spektral çözünürlüğünü geliştirmek için neredeyse kesinlikle bu sinyale bir pencere uygulayacağız. Birinci ve üçüncü frekans bileşenleri sinyalin başlangıcında ve sonunda olduğundan, orta bileşen sadece 4 dB (Hanning penceresi) ile zayıflatılırken 27 dB azaltılır.

Pencereli Spektrum

Açıkça söylemek gerekirse, DFT'nin çıktısı , ölçeklendirilmiş olsun veya olmasın, girdinin oldukça zayıf bir temsili olabilir .

Genellikle saf bir matematik problemi olan ters DFT durumunda, bilinmeyen bir sinyalin analizinin aksine, DFT'ye giriş açıkça tanımlanır, böylece çıktıyı nasıl ölçeklendireceğinizi bilirsiniz.

Bir spektrum analizörü, analog veya FFT ile bir sinyali analiz ederken, problemler benzerdir. Görev döngüsünü de bilmiyorsanız görüntülenen sinyalin gücünü bilmiyorsunuz. Ancak o zaman bile, pencereleme, açıklık, süpürme hızları, filtreleme, dedektör tipi ve diğer faktörler sonucu etkilemek için çalışır.

Sonuç olarak, zaman ve frekans alanları arasında hareket ederken oldukça dikkatli olmalısınız. Ölçeklendirme ile ilgili sorduğunuz soru önemlidir, bu yüzden umarım çıktıyı nasıl ölçeklendireceğinizi öğrenmek için DFT'ye girişi anlamalısınız. Girdi açıkça tanımlanmamışsa, DFT'nin çıktısı, ölçekleseniz de ölçeklemeseniz de, büyük bir şüphecilikle ele alınmalıdır.


Bu cevabı kapsamlılık ve çok sayıda ayrıntılı bilgi için seçtim, ancak sezgisel bir genel bakış için Phonon'un mükemmel cevabına da bakın.
13:35

9

Hesaplamalı kesinlik konularını içeren çeşitli nedenleri düşünebilirim, ancak bu muhtemelen adalet yapmaz çünkü matematiksel olarak ne olursa olsun onu aynı şekilde tanımlıyoruz ve matematik kesinlik sorunları bilmiyor.

İşte benim almam. Kavramsal olarak sadece bir dönüşüm olarak değil, DFT'nin sinyal işleme anlamında ne anlama geldiğini düşünelim. Bu durumda bana, bir sinyale ve bir sisteme DFT uygulanmasının bizi farklı sonuçlar görmek istemesine neden olduğu görülmektedir.

Örneğin, DFT'yi sabit bir değer sinyaline uygulayalım. Bu sinyalin sonlu uzunluğunda ve 16 dokunma uzunluğunda olduğunu varsayalım. Bu durumda DFT'den ne istiyoruz? Açıkçası, sinyalin her frekans bileşeninin hangi genliğe sahip olduğunu söylememizi istiyoruz. Açıkçası, sinyalimiz frekans 0 ve genlik 1'in tek bir bileşenine sahiptir. Ancak DFT bize bin 0 ve yükseklik 16'da tek bir tepe verir! Bu durumda, DFT'nin tanımı ile ilgili hayal kırıklığınız mükemmel mantıklıdır. Analiz katsayılarını değil, sentez katsayılarını ölçeklendirmeliyiz.

Tamam, şimdi aynı sayı dizisini, yani 16 dizilimizi, ancak bu durumda bir sistem olarak analiz edelim. Kavramsal olarak bir sistemin frekans tepkisinin ne anlama gelmesini istiyoruz? Çoğu insan, girdinin, yani aktarım işlevine kıyasla çıkışın genliği olduğunu söyleyecektir. Bu durumda, sistemimize bir birlik genlik DC sinyali beslediğimizi ve kararlı durum yanıtının genliğine baktığımızı varsayalım. Peki, iki sabit 16 kademe sinyalini birlikte bükün ve geçici bir rampa ve ardından bir DC genlik sinyali olan bir sabit durum çıkışı elde edersiniz (kontrol edin!) 16! Bu durumda, ölçeklendirmeyen analiz dönüşümü tanımımız, diğerlerinden daha mantıklıdır.

Günün sonunda, tamamen neyi temsil etmeye çalıştığınızla ilgili. DFT'nin bu sistem merkezli tanımını dikkate almanın birçok nedeni vardır.

Ancak biz tamamen matematiksel açıdan dönüşümü bakmak, ne bunların bu dönüşümü yapabilir, çünkü en mantıklı Eğer birimdik ve üniter ölçekleme ile hem analiz ve sentez dönüşümleri tarafından1(N-). Bu aynı zamanda Parseval teoreminin her zaman geçerli olacağı şekilde hem zaman hem de frekans gösteriminin gücünü koruyacaktır .


Harika cevap, teşekkürler! User5108_Dan'ın kapsamlılık için cevabını seçtim, ancak cevabınız kesinlikle en iyi sezginin sağlanmasına yardımcı oldu.
13:34

7

Aslında, ölçek faktörlerini koymanın 3 farklı yolu çeşitli ve farklı FFT / IFFT uygulamalarında yaygındır: 1.0 ileri ve 1.0 / N geri, 1.0 / N ileri ve 1.0 geri ve 1.0 / sqrt (N) hem ileri hem de geri.

Bu 3 ölçekleme varyasyonunun tümü, körelme faktörleri için genel ölçeklendirilmemiş sin () ve cos () trig fonksiyonlarını kullanan bir IFFT (FFT (x)) gidiş-dönüşünün bir kimlik dönüşümü olmasını sağlar.

İleri FFT'de sinüzoidal büyüklüğün korunmasının toplam enerjiyi korumadığını unutmayın (Parseval teoreminde olduğu gibi). Tercih ettiğiniz birini seçin.

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.