Warum sagen wir, dass "Zero-Padding die Frequenzauflösung nicht wirklich erhöht"?


12

Hier ist eine Sinuskurve der Frequenz f = 236.4 Hz(sie ist 10 Millisekunden lang; sie hat N=441Punkte mit Abtastrate fs=44100Hz) und ihre DFT ohne Null-Auffüllung :

Geben Sie hier die Bildbeschreibung ein

Die einzige Schlussfolgerung, die wir aus der DFT ziehen können, lautet: "Die Frequenz beträgt ungefähr 200 Hz."

Hier ist das Signal und seine DFT mit einer großen Null-Auffüllung :

Geben Sie hier die Bildbeschreibung ein

Jetzt können wir eine viel genauere Schlussfolgerung ziehen : "Durch genaues Betrachten des Maximums des Spektrums kann ich die Frequenz 236 Hz schätzen" (ich habe gezoomt und festgestellt, dass das Maximum nahe 236 liegt).

Meine Frage ist: Warum sagen wir, dass "Null-Auffüllen die Auflösung nicht erhöht" ? (Ich habe diesen Satz sehr oft gesehen, dann sagen sie "es fügt nur Interpolation hinzu")

=> In meinem Beispiel hat mir das Auffüllen mit Null geholfen, die richtige Frequenz mit einer genaueren Auflösung zu finden!


1
Eine andere Möglichkeit, über diese sehr alte Frage nachzudenken: Wenn Sie überhaupt keine Zeitreihen-Darstellung hatten, sondern nur die fft mit niedriger Auflösung, können Sie sie in Zeitreihen, Null-Pad und Re konvertieren -fft, um die 236Hz rauszuholen. Das 'low-res'-fft muss also alle die gleichen Informationen wie das glatte enthalten.
Joshua R.

Antworten:


19

Die Auflösung hat in diesem Zusammenhang eine sehr spezifische Definition. Es bezieht sich auf Ihre Fähigkeit , zwei separate Töne bei nahe gelegenen Frequenzen aufzulösen . Sie haben die Abtastrate Ihrer Spektrumschätzung erhöht, aber Sie haben keine Möglichkeit erhalten, zwischen zwei Tönen zu unterscheiden, die beispielsweise bei 236 Hz und 237 Hz liegen könnten. Stattdessen "schmelzen" sie zu einem einzigen Blob zusammen, unabhängig davon, wie viel Null-Polsterung Sie anwenden.

Die Lösung zur Erhöhung der Auflösung besteht darin, das Signal über einen längeren Zeitraum zu beobachten und dann eine größere DFT zu verwenden. Dies führt zu Hauptkeulen, deren Breite umgekehrt proportional zur DFT-Größe ist. Wenn Sie also lange genug beobachten, können Sie tatsächlich die Frequenzen mehrerer Töne auflösen, die nahe beieinander liegen.

- -

Um zu sehen, wie sich dies auswirkt, sehen Sie hier eine Darstellung der vergrößerten FFT der Addition von zwei Signalen: Ihrer ursprünglichen Sinuskurve und einer, deren Frequenz sich um 0 bis 100 Hz von dieser unterscheidet.

Nur in Richtung des 100-Hz-Differenzendes des Diagramms (hier links) können Sie die beiden unterscheiden (auflösen).

Scilab-Code zum Generieren des folgenden Diagramms.

Geben Sie hier die Bildbeschreibung ein

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]))

Vielen Dank ! OK, Null-Padding hilft nicht , zwei separate Töne bei nahe gelegenen Frequenzen aufzulösen . In meinem Beispiel kann es jedoch nützlich sein, um die Spitze des Spektrums und damit die Fondamentalfrequenz eines Tons zu ermitteln (z. B. für genaue Tonhöhenverfolgungszwecke)
Basj

Ich dachte, "Null-Padding erhöht die Auflösung nicht" würde bedeuten, "Sie können mit Hilfe von Zero-Padding keine genaue Tonhöhenverfolgung durchführen" (das stimmt hier nicht, das Beispiel zeigt, dass es möglich ist, eine Tonhöhe genau zu erkennen)
Basj

Ich denke du verstehst richtig. Zero-Padding hat seine Verwendung, beispielsweise bei der Feinschätzung des Spitzenorts aus einem groben Spektrum. Es ist einfach keine Silberkugel.
Jason R

1
Ich habe gerade etwas anderes als Zero-Padding ausprobiert, aber verwandt. Anstatt x(n)länger zu machen (mit 0am Ende), behalte ich die x(n)Länge N bei, ABER die Änderung ist hier: statt DFT(k) = \sum x(n) exp(-2*i*pi*n*k/N)für k=0,1,...,N-1, mache ich DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))für k=0,1,...,10*N-1... Dies ist wie das Hinzufügen weiterer Bins ( 10 NBins anstelle von NFrequenzbins), aber das Beibehalten derselben x(n)von Länge N. Jetzt wären die Bins 10 Hz, 20 Hz, ..., 100 Hz, 110 Hz, 120 Hz, ..... => Ist es dasselbe wie Null-Padding: keine echte zusätzliche Auflösung, sondern nur Interpolation?
Basj

Ergibt das Hinzufügen von mehr Bins (10N anstelle von N): DFT2(k) = \sum x(n) exp(-2*i*pi*n*k/(10*N))für k=0,1,...,10*N-1und Beibehalten der gleichen x(n)Länge Ndas gleiche Ergebnis wie das Auffüllen mit Nullen: nicht wirklich mehr Auflösung, sondern nur Interpolation?
Basj

13

Der Begriff "Auflösung" hat mehrere Bedeutungen, was Menschen, die versuchen zu kommunizieren, verwirren kann, wenn sie zwei verschiedene Bedeutungen verwenden.

Im optischen Sinne hilft es nicht, zwei nahegelegene klar getrennte Punkte (oder zwei benachbarte Peaks im Spektrum) anstelle eines verschwommenen Blobs aufzulösen. Dies ist die Bedeutung, die am wahrscheinlichsten verwendet wird, wenn angegeben wird, dass das Auffüllen mit Nullen die Auflösung nicht erhöht.

Wenn die Anforderung an die Auflösung einen Abfall (zum Beispiel eine Verringerung um mindestens 3 dB) zwischen den Spektralspitzen erfordert, ist die Auflösung sogar niedriger als der FFT-Bin-Abstand, z. B. nicht einmal Fs / N, sondern 2X bis 3X oder mehr. abhängig von der verwendeten Fensterung. Eine schwächere Anforderung für die Auflösung könnte nur der Frequenzabstand der orthogonalen Basisvektoren der DFT sein, z. B. Fs / N.

In Bezug auf das Zeichnen von Punkten gibt es beim Auffüllen mit Null mehr Punkte zum Zeichnen, wie bei der DPI-Auflösung (Plotpunkte pro Zoll). Das kann es einfacher machen, Extrema mit dem Augapfel zu erkennen. Dies sind jedoch die gleichen Punkte, die Sie erhalten würden, wenn Sie eine Plotinterpolation von sehr hoher Qualität (Sinc-Interpolation) ohne Null-Auffüllung durchführen würden. Sie fügen also wirklich keine Informationen hinzu, die ohne die Null-Auffüllung sonst nicht berechnet werden könnten.

In Bezug auf die Tonhöhenverfolgung kann eine parabolische oder Sinc-Interpolation (Interpolation zwischen FFT-Ergebnisfächern) eines nicht mit Nullen gepolsterten FFT-Ergebnisses mit Fenstern ein ebenso gutes Ergebnis liefern wie mit einem rechenintensiveren, längeren, mit Nullen gepolsterten FFT-Diagramm. Das Null-Auffüllen liefert somit ein "besseres" Pitch-Tracking-Ergebnis als das nicht-Null-aufgefüllte und nicht-interpolierte Peak-Picking, aber oft viel weniger effizient als nur die Interpolation.

Wenn Sie Ihrem Beispiel Rauschen hinzufügen, das jedoch etwas geringer als das Signal ist, werden Sie feststellen, dass der mit Null gepolsterte Peak genauso ungenau sein kann wie der mit Null gepolsterte Peak. Im allgemeineren Fall haben Sie möglicherweise die "richtige" Frequenz nicht genauer als zuvor gefunden. Das Null-Auffüllen interpoliert nur das ungenaue Ergebnis aufgrund von Rauschen, was ein weiterer Grund ist, warum es die Auflösung nicht erhöhen soll.


Nur zur Erinnerung: Was passiert, wenn ich dieselbe Sinuskurve nur f=236.4 hzwährend derselben habe 10ms, aber mit fs = 192 kHz anstelle von 44,1 kHz: Wird die wahre Frequenzauflösung dann höher sein?
Basj

Wenn Sie die Abtastrate erhöhen, erhalten Sie mehr Hochfrequenz-Bins, aber den gleichen DFT-Bin-Abstand in der Nähe jeder interessierenden Niederfrequenz.
hotpaw2

1
Wird durch Erhöhen der Abtastrate die sincähnliche Kurve in DFT enger oder nicht? Wenn nicht, bedeutet dies, dass durch Erhöhen der Abtastrate keine Auflösung hinzugefügt wird (dh die Fähigkeit, Frequenzen aufzulösen )
Basj

@Basj Das Bestimmen einer bestimmten Frequenz eines Signals wird normalerweise als Parameterschätzung bezeichnet, dh Sie versuchen, den Frequenzparameter zu schätzen. Für die Auflösung (Trennung von 2 Tönen) ist die Auflösung gegeben durch1/.T. wo T.ist die Länge des Signals. Das Ändern der Abtastrate (und nicht der Dauer) wirkt sich also nicht auf die Auflösung aus, sondern auf die Genauigkeit der Schätzung.
David

Die Breite des Sinc in der Frequenz hängt mit der Breite des Datenfensters in der Zeit zusammen. Das Auffüllen mit Nullen oder das Ändern der Abtastrate wirkt sich nicht wirklich darauf aus (abgesehen von Abtast- oder Quantisierungsproblemen).
hotpaw2
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.