Dlaczego mówimy, że „wypełnienie zerowe tak naprawdę nie zwiększa rozdzielczości częstotliwości”

12

Oto sinusoida częstotliwości f = 236.4 Hz(ma długość 10 milisekund; ma N=441punkty przy częstotliwości próbkowania fs=44100Hz) i jej DFT, bez dopełniania zera :

wprowadź opis zdjęcia tutaj

Jedyny wniosek, jaki możemy wyciągnąć patrząc na DFT, to: „Częstotliwość wynosi około 200 Hz”.

Oto sygnał i jego DFT, z dużym wypełnieniem zerowym :

wprowadź opis zdjęcia tutaj

Teraz możemy podać znacznie bardziej precyzyjny wniosek : „Patrząc uważnie na maksimum widma, mogę oszacować częstotliwość 236 Hz” (powiększyłem i stwierdziłem, że maksimum to blisko 236).

Moje pytanie brzmi: dlaczego mówimy, że „zero-padding nie zwiększa rozdzielczości” ? (Często widywałem to zdanie, a potem mówią „dodaje interpolację”)

=> W moim przykładzie wypełnienie zerami pomogło mi znaleźć właściwą częstotliwość z bardziej precyzyjną rozdzielczością!

Basj
źródło
1
Inny sposób myślenia o tym bardzo starym pytaniu: jeśli nie masz w ogóle wykresu szeregów czasowych, ale tylko fft w niskiej rozdzielczości - możesz przekonwertować go na szereg czasowy, zerowanie i powtórzenie -fft, aby wyjść na 236Hz. Zatem fft o niskiej rozdzielczości musi zawierać wszystkie te same informacje, co gładkie.
Joshua R.

Odpowiedzi:

19

Rozdzielczość ma w tym kontekście bardzo konkretną definicję. Odnosi się do twojej zdolności do rozpoznania dwóch oddzielnych tonów na pobliskich częstotliwościach. Zwiększyłeś częstotliwość próbkowania swojego widma, ale nie uzyskałeś żadnej zdolności rozróżniania dwóch tonów, które mogą mieć na przykład 236 Hz i 237 Hz. Zamiast tego będą „stopić się” w jedną kroplę, bez względu na to, ile zastosujesz wypełniania zerowego.

Rozwiązaniem zwiększającym rozdzielczość jest obserwowanie sygnału przez dłuższy czas, a następnie użycie większego DFT. Spowoduje to, że główne płaty, których szerokość jest odwrotnie proporcjonalna do rozmiaru DFT, więc jeśli będziesz obserwować wystarczająco długo, możesz faktycznie rozpoznać częstotliwości wielu tonów, które są blisko siebie.

-

Aby zobaczyć, jak to się dzieje, oto wykres powiększonej FFT dodania dwóch sygnałów: twojej pierwotnej sinusoidy i tej, która różni się od niej częstotliwością od 0 do 100 Hz.

Tylko w kierunku końca różnicy 100 Hz wykresu (tutaj po lewej stronie) można je rozróżnić (rozwiązać).

Kod Scilab do generowania wykresu poniżej.

wprowadź opis zdjęcia tutaj

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]))
Jason R.
źródło
dzięki ! ok, więc dopełnianie zera nie pomoże rozwiązać dwóch oddzielnych tonów przy pobliskich częstotliwościach; jednak w moim przykładzie może być przydatny w celu znalezienia piku widma, a tym samym znalezienia podstawowej częstotliwości tonu (np. w celu dokładnego śledzenia wysokości tonu)
Basj,
myślałem, że „zerowanie padding nie zwiększa rozdzielczości” oznaczałoby „nie można wykonać dokładnego śledzenia wysokości tonu za pomocą padding zero” (to nieprawda, przykład pokazuje, że możliwe jest dokładne wykrycie pewnej wysokości tonu)
Basj
Myślę, że rozumiesz poprawnie. Wypełnianie zerowe ma swoje zastosowania, takie jak precyzyjne oszacowanie położenia piku z grubego widma. To po prostu nie srebrna kula.
Jason R
1
Właśnie próbowałem czegoś innego niż wypełnianie zerami, ale powiązane. Zamiast robić x(n)dłuższe (z 0końcem), zachowuję x(n)długość N, ALE zmiana jest tutaj: zamiast DFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)dla k=0,1,...,N-1, robię DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))dla k=0,1,...,10*N-1... To jest jak dodawanie kolejnych przedziałów ( 10 Nprzedziałów zamiast Nprzedziałów częstotliwości), ale utrzymanie tego samego x(n)długości N. Teraz pojemniki będą miały 10 Hz, 20 Hz, ..., 100 Hz, 110 Hz, 120 Hz, ..... => Czy to to samo, co wypełnianie zerami: brak dodatkowej rozdzielczości, a jedynie interpolacja?
Basj
Czy dodanie większej liczby przedziałów (10 N zamiast N): DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))za k=0,1,...,10*N-1i zachowanie tej samej x(n)długości Ndaje ten sam wynik niż dopełnianie zera: naprawdę nie większa rozdzielczość, a jedynie interpolacja?
Basj
13

Termin „rozdzielczość” ma wiele znaczeń, które mogą dezorientować ludzi próbujących się porozumiewać, używając dwóch różnych znaczeń.

W sensie optycznym, będąc w stanie rozwiązać dwa w pobliżu wyraźnie oddzielone punkty (lub dwa sąsiednie szczyty w widmie) zamiast jednego rozmytego kropelka, wypełnienie zerą nie pomoże. Jest to znaczenie najprawdopodobniej używane w przypadku stwierdzenia, że ​​wypełnienie zerem nie zwiększa rozdzielczości.

Jeśli wymaganie dotyczące rozdzielczości wymaga zapadnięcia (na przykład obniżenia minimum 3 dB) między pikami widmowymi, wówczas rozdzielczość będzie nawet niższa niż odstępy między przedziałami FFT, np. Nawet Fs / N, ale 2X do 3X to lub więcej, w zależności od zastosowanego okna. Słabszym wymogiem rozdzielczości może być tylko odstęp częstotliwości ortogonalnych wektorów bazowych DFT, np. Fs / N.

Jeśli chodzi o punkty kreślenia, tak, wypełnienie zerą da ci więcej punktów do wydrukowania, tak jak w rozdzielczości DPI (punktów kreślenia na cal). To może ułatwić wybranie ekstremy za pomocą gałki ocznej. Są to jednak te same punkty, które można uzyskać, wykonując interpolację wydruku o bardzo wysokiej jakości (interpolacja Sinc) bez żadnego dopełniania zera, więc tak naprawdę nie dodają żadnych informacji, których inaczej nie można by obliczyć bez dopełniania zera.

Jeśli chodzi o śledzenie wysokości tonu, interpolacja paraboliczna lub Sinc (interpolacja między przedziałami wyników FFT) okienkowanego wyniku FFT niezerowanego z zerami, może dać równie dobry wynik, jak z bardziej intensywnego obliczeniowo dłuższego wykresu FFT z zerowaniem. W ten sposób wypełnienie zera zapewnia „lepszy” wynik śledzenia skoku niż zbieranie pików bez wypełnienia zera i bez interpolacji, ale często o wiele mniej efektywnie niż przy użyciu interpolacji.

Jeśli dodasz szum do swojego przykładu, ale nieco mniej niż sygnał, przekonasz się, że pik z wypełnieniem zerowym może być tak samo niedokładny jak pik z wypełnieniem zerowym. Tak więc, w bardziej ogólnym przypadku, być może nie znalazłeś „właściwej” częstotliwości z większą dokładnością niż wcześniej. Zero-padding interpoluje tylko niedokładny wynik z powodu szumu, co jest kolejnym powodem, dla którego mówi się, że nie zwiększa rozdzielczości.

hotpaw2
źródło
Wystarczy pamiętać: co się stanie, jeśli będę mieć tę samą sinusoidę tylko f=236.4 hzw tym samym czasie, 10msale przy fs = 192 kHz zamiast 44,1 kHz: Czy rzeczywista rozdzielczość częstotliwości będzie wyższa?
Basj
Zwiększenie częstotliwości próbkowania zapewni więcej
przedziałów
1
Czy zwiększenie częstotliwości próbkowania spowoduje, że sinckrzywa podobna w DFT będzie węższa czy nie? Jeśli nie, oznacza to, że zwiększenie częstotliwości próbkowania nie doda rozdzielczości (co oznacza zdolność do rozwiązywania częstotliwości)
Basj
1/TT
Szerokość częstotliwości Sinc jest związana z szerokością okna danych w czasie, wypełnienie zera lub zmiana częstotliwości próbkowania tak naprawdę nie ma na to wpływu (inne niż problemy z próbkowaniem lub kwantyzacją).
hotpaw2