Neden “sıfır doldurmanın frekans çözünürlüğünü gerçekten artırdığını” söylüyoruz?


12

İşte bir sinüsoid frekansı f = 236.4 Hz(10 milisaniye uzunluğunda; N=441örnekleme hızında noktaları vardır fs=44100Hz) ve sıfır dolgusu olmadan DFT'si :

resim açıklamasını buraya girin

DFT'ye bakarak verebileceğimiz tek sonuç: "Frekans yaklaşık 200Hz'dir".

İşte sinyal ve DFT'si, büyük bir sıfır dolgu ile :

resim açıklamasını buraya girin

Şimdi çok daha kesin bir sonuç verebiliriz : "Spektrumun maksimum değerine dikkatle bakarak, 236Hz frekansını tahmin edebilirim" (Yakınlaştırdım ve maksimumun 236'ya yakın olduğunu buldum).

Sorum şu: Neden "sıfır doldurma çözünürlüğü artırmıyor" diyoruz ? (Bu cümleyi çok sık gördüm, sonra "sadece enterpolasyon ekler" derler.)

=> Örneğimde, sıfır dolgu daha doğru bir çözünürlükle doğru frekansı bulmama yardımcı oldu!


1
Bu çok eski soruyu düşünmenin başka bir yolu: Eğer zaman serisi grafiğiniz yoksa, sadece 'düşük çözünürlüklü' fft - bunu zaman serisine, sıfır pedine ve yeniden dönüştürebilirsiniz. -fft 236Hz çıkmak için. Yani, 'düşük res' fft gerekir pürüzsüz birinin aynı bilgilerin tümünü içerir.
Joshua R.

Yanıtlar:


19

Çözümün bu bağlamda çok özel bir tanımı vardır. Bu , yakındaki frekanslarda iki ayrı tonu çözme yeteneğiniz anlamına gelir . Spektrum tahmininizin örnek oranını artırdınız, ancak örneğin 236 Hz ve 237 Hz'de olabilecek iki ton arasında ayrım yapma yeteneği kazanmadınız. Bunun yerine, ne kadar sıfır dolgu uygularsanız uygulayın, tek bir damla halinde "birlikte eriyeceklerdir".

Çözünürlüğü arttırmanın çözümü, sinyali daha uzun bir süre gözlemlemek, daha sonra daha büyük bir DFT kullanmaktır. Bu, genişliği DFT boyutu ile ters orantılı olan ana loblarla sonuçlanacaktır, bu nedenle yeterince uzun süre gözlemlerseniz, birbirine yakın olan birden fazla tonun frekanslarını gerçekten çözebilirsiniz.

-

Bunun nasıl oynandığını görmek için, iki sinyalin eklenmesinin yakınlaştırılmış FFT'sinin bir grafiği: orijinal sinüzoidiniz ve frekansı 0 ila 100 Hz arasında değişen bir.

İkisini ayırt edebileceğiniz (çözebileceğiniz), yalnızca grafiğin 100Hz fark ucuna doğru (burada sol taraf).

Aşağıdaki grafiği oluşturmak için Scilab kodu.

resim açıklamasını buraya girin

f = 236.4;
d = 10;
N=441;
fs=44100;
extra_padding = 10000; 

t=[0:1/fs:(d/1000-1/fs)]
ff = [0:(N+extra_padding-1)]*fs/(N+extra_padding);

x = sin(2*%pi*f*t);

XX = [];

for delta_f = [0:100];
    y = sin(2*%pi*(f+delta_f)*t);
    FFTX = abs(fft([x+y zeros(1,extra_padding)]));
    XX = [XX; FFTX];
end

mtlb_axis([0 1300 0 500])

figure(1);
clf
[XXX,YYY] = meshgrid(ff,0:100);
mesh(XXX(1:100,[50:90]),YYY(1:100,[50:90]),XX(1:100,[50:90]))

Teşekkürler ! Tamam, sıfır doldurma , yakın frekanslarda iki ayrı tonu çözmeye yardımcı olmaz ; ancak, benim
örneğimde

"sıfır dolgu çözünürlüğü artırmak değil" anlamına gelir "sıfır dolgu yardımı ile doğru perde izleme yapamazsınız" anlamına gelir (bu doğru değil, örnek bazı perde doğru tespit etmek mümkün olduğunu gösterir)
Basj

Doğru anladığınızı düşünüyorum. Sıfır dolgu, kaba bir spektrumdan tepe konumunun ince tahmininde olduğu gibi kullanımlarına sahiptir. Sadece gümüş bir kurşun değil.
Jason R

1
Sadece sıfır dolgudan başka bir şey denedim, ama ilgili. Bunun yerine yapma x(n)(daha uzun 0sonunda), ben tutmak x(n)uzunluğu N ANCAK değişim buradadır: yerine DFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)için k=0,1,...,N-1, yapmam DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))için k=0,1,...,10*N-1... Bu (diğer bidonları eklemeye benzer 10 Nyerine kutuları Nfrekans kutuları) ama aynı tutarak x(n)uzunluk N. Şimdi kutular 10hz, 20hz, ..., 100hz, 110hz, 120hz, ..... => Sıfır dolguyla aynı mı: gerçek ek çözünürlük yok, sadece enterpolasyon mu?
Basj

: Daha fazla bidonları (yerine N 10N) ekleyerek mu DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))için k=0,1,...,10*N-1ve aynı tutarak x(n)uzunlukta Nsıfır doldurma daha aynı sonucu verir: gerçekten daha çözünürlük, ancak yalnızca enterpolasyon?
Basj

13

"Çözüm" terimi, iki farklı anlam kullanırken iletişim kurmaya çalışan insanları karıştırabilen birden fazla anlama sahiptir.

Optik anlamda, bulanık bir damla yerine yakındaki açıkça ayrılmış iki noktayı (veya spektrumdaki iki bitişik tepe noktasını) çözebilmek, sıfır dolgu yardımcı olmaz. Sıfır dolgusunun çözünürlüğü artırmadığını belirtirken bu muhtemelen en çok kullanılan anlamdır.

Bir kişinin çözünürlük gereksinimi spektral pikler arasında bir daldırma gerektiriyorsa (örneğin minimum 3 dB düşürme), çözünürlük FFT bölme aralığından bile daha düşük olacaktır, örneğin Fs / N, hatta 2X ila 3X veya daha fazlası, kullanılan pencereye bağlı olarak. Çözünürlük için daha zayıf bir gereksinim, DFT'nin dik temel vektörlerinin, örneğin Fs / N'nin frekans aralığı olabilir.

Noktaları çizme açısından, evet, sıfır dolgu, DPI (inç başına çizim noktaları) çözünürlüğünde olduğu gibi, çizmeniz için daha fazla puan verecektir. Bu, göz küresi ile ekzema almayı kolaylaştırabilir. Bununla birlikte, herhangi bir sıfır dolgusu olmadan çok yüksek kaliteli bir arsa enterpolasyonu (Sinc enterpolasyonu) yaparak alacağınız aynı noktalardır, bu nedenle sıfır dolgusu olmadan başka türlü hesaplanamayacak hiçbir bilgi eklemezler.

Zift izleme açısından, pencereli sıfır dolgulu olmayan bir FFT sonucunun parabolik veya Sinc enterpolasyonu (FFT sonuç kutuları arasında enterpolasyon), daha hesaplamalı olarak daha yoğun daha uzun sıfır dolgulu bir FFT grafiğinden olduğu kadar iyi bir sonuç verebilir. Böylece sıfır dolgusu, sıfır dolgulu ve enterpole edilmemiş pik toplamadan daha iyi bir adım izleme sonucu verir, ancak genellikle sadece enterpolasyon kullanmaktan çok daha az verimli olur.

Örneğinize parazit ekler, ancak sinyalden biraz daha az, sıfır dolgulu zirvenin sıfır olmayan dolgulu zirve kadar yanlış olabileceğini göreceksiniz. Bu nedenle, daha genel bir durumda, "doğru" frekansı öncekinden daha doğru bir şekilde bulamayabilirsiniz. Sıfır dolgu, gürültü nedeniyle sadece yanlış sonucu enterpole eder, bu da çözünürlüğü artırmamasının başka bir nedeni.


Hatırlamak f=236.4 hziçin 10mssadece aynı sinüsoid varsa sadece aynı süre boyunca ama 44.1khz yerine fs = 192khz ile: Gerçek frekans çözünürlüğü o zaman daha yüksek olacak mı?
Basj

Örnekleme oranını artırmak size daha yüksek frekanslı bölmeler verecektir, ancak aynı DFT bölme aralığının herhangi bir düşük frekansın yakınında olması,
hotpaw2

1
Örnekleme hızının arttırılması sincDFT'deki benzer eğriyi daraltır mı yoksa düşürmez mi? Değilse, bu, örnekleme hızını arttırmanın çözünürlük eklemeyeceği anlamına gelir (yani frekansları çözme yeteneğinde )
Basj

1/TT

Sıklıktaki Sinc'ın genişliği, veri penceresinin zaman içindeki genişliği ile ilgilidir, sıfır doldurma veya örnekleme oranını değiştirmek gerçekten bunu etkilemez (diğer örnekleme veya nicemleme sorunları).
hotpaw2
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.