FFT-Verarbeitungsgewinn


8

Bei der Transformation eines verrauschten Signals über die schnelle Fourier-Transformation vom Zeit- in den Frequenzbereich gibt es eine "Verarbeitungsverstärkung" der FFT, die mit zunehmender Anzahl von Bins zunimmt. Je mehr Behälter ich habe, desto stärker wird das Grundrauschen im Frequenzbereich reduziert.

1. Eigentlich verstehe ich nicht ganz, woher dieser Gewinn kommt. Bedeutet dies, dass ich nur das Signal mit einer höheren Abtastrate abtasten muss, um mehr Bins zu haben, daher eine höhere FFT-Verarbeitungsverstärkung?

2. Was ist mit der inversen FFT? Habe ich eine "Verarbeitung verloren"? Wenn ich im Frequenzbereich beginne, bedeutet dies, dass je mehr Frequenzabtastungen ich habe, desto mehr Rauschen im Zeitbereichssignal auftritt. Dies wäre jedoch nicht intuitiv, da dies auch zu einer starken Verzerrung der Signale führen würde, wenn eine Auffüllung (der Frequenzbereichsdaten) für Zeitbereichsinterpolationszwecke angewendet wird.


1
Kurze Antwort: Eine Sichtweise auf die DFT ist eine gleichmäßig verteilte Reihe von Bandpassfiltern. Wenn Sie die Anzahl der Bins in Ihrer DFT erhöhen, hat jeder Filter eine geringere Bandbreite (und lässt daher weniger Rauschen durch). Wenn Sie nach einem Schmalbandsignal suchen, lohnt es sich, die DFT-Bin-Breite nahe an der Bandbreite des interessierenden Signals zu haben. Auf diese Weise durchlaufen Sie das Signal immer noch unverändert und lassen gleichzeitig so wenig Rauschen wie möglich durch. Ich kann dies später erweitern, wenn ich eine Chance bekomme.
Jason R

Ich würde mich über eine erweiterte Erklärung freuen.
Frank


@Frank: Der von Seth bereitgestellte Link enthält eine etwas detailliertere Erklärung. Das Erhöhen der FFT-Größe zum "Herunterdrücken des Grundrauschens" ist analog zum Verringern der Auflösungsbandbreite eines Spektrumanalysators.
Jason R

1
ESCHEW OBFUSCATION Das FFT-SNR steigt aufgrund der DEFINITION des FFT-SNR mit der Anzahl der FFT-Punkte. Das FFT-SNR ist definiert als das SNR in einem BW, das der Größe des Frequenz-BIN entspricht, und die BIN-Größe nimmt mit zunehmender Anzahl von FFT-Punkten ab.
Konto Benutzer

Antworten:


5

Ich denke, der einfachste Weg, ein Konzept zu umgehen, ist ein einfaches Beispiel:

% example of FFT of a very noisy sin wave
f0 = 1000;     % sinusoid frequency
Fs = 10000;    % sampling frequency 
n = 0:1/Fs:1; % one second worth of sample index
N = length(n);
SNR = -20;    % signal to noise ratio is -20dB
Pn  = 0.5*10^(-SNR/10); % signal power is 0.5 for sin wave
NFFT = round([N/8 N/4 N/2 N]); % FFT size to see how it effects the gain


%% signal and generation
sx = sin(2*pi*f0*n);
sn = sqrt(Pn)*randn(1, N);
%% adding noise
xn = sx + sn;
%% signal with and w/o noise in time
figure(1);
plot(n(1:100), xn(1:100)); hold on;
plot(n(1:100), x(1:100), 'r');
legend('noisy', 'clean');
%% FFT of different sizes
figure(2); 
Xf = fft(xn, NFFT(4));
plot(Fs*(0:NFFT(4)-1)/NFFT(4), abs(Xf)/N, '.-'); hold on;
Xf = fft(xn, NFFT(3));
plot(Fs*(0:NFFT(3)-1)/NFFT(3), abs(Xf)/N, 'r.-');
Xf = fft(xn, NFFT(2));
plot(Fs*(0:NFFT(2)-1)/NFFT(2), abs(Xf)/N, 'g.-'); 
Xf = fft(xn, NFFT(1));
plot(Fs*(0:NFFT(1)-1)/NFFT(1), abs(Xf)/N, 'k.-');
legend('FFT size = N', 'FFT size = N/2', 'FFT size = N/4', 'FFT size = N/8');

Die Darstellung der lauten und sauberen Sündenwelle im Zeitbereich sieht folgendermaßen aus: Laut gegen saubere Sündenwelle

Die FFT-Diagramme für verschiedene Größen im Frequenzbereich sind: Geben Sie hier die Bildbeschreibung ein

Das heißt, das Erhöhen der FFT-Größe bedeutet, dass mehr Signalabtastwerte in die Berechnung aufgenommen werden, und daher kann die FFT die Frequenz leichter bestimmen, wenn die Signalinformationen hinzugefügt werden, während die Rauschinformationen dies nicht tun. Hier können Sie sehen, dass das "relative" Grundrauschsignal abgenommen hat.

Was das inverse Fourier betrifft, werde ich nicht sagen, dass es ein Verlust ist. Ich würde sagen, wir sind zurückgegangen, woher wir kamen.

hth.


2
Dies ist zwar nicht unbedingt streng, aber die Art von Antwort, nach der das OP gesucht hat. Die anderen Antworten, die die konstanten Gewinne beschreiben, die vielen DFT-Implementierungen inhärent sind, sind nicht falsch, aber sie beantworten einfach nicht die gestellte Frage. Siehe auch den Link in Seths Kommentar zu der obigen Frage.
Jason R

Ich kann der Aussage "Es gibt keinen Sinn für IFFT, wenn wir die FFT überhaupt nicht gemacht haben" nicht ganz zustimmen. Stellen Sie sich einen Vektornetzwerkanalysator vor, der Frequenzbereichswerte liefert. In diesem Fall wird keine (Vorwärts-) FFT a priori angewendet. Daher würde das Anwenden der inversen FFT auf diese Originaldaten zu "Verarbeitungsverlust" führen, während die Transformation in den Zeitbereich erfolgt?!
Frank

@Frank bedeutet, dass wir im Spreizspektrum einen Verarbeitungsverlust am Sender einführen, um den Verarbeitungsgewinn am Empfänger anzuwenden! Am Ende haben wir nichts gewonnen.
Lerner

@Learner: Das Spreizspektrum ist eine Art künstliches Beispiel, da ein Schmalbandsignal am Sender "künstlich erzeugt" wird, um am Empfänger eine gewisse Verstärkung zu erzielen. Bei Verwendung eines Vektornetzwerkanalysators gibt es jedoch keinen Schritt, bevor die Frequenzbereichsdaten erhalten werden. Daher gibt es keine Quelle für künstliches "degenerierendes SNR", um an einem anderen Punkt in der Verarbeitungskette ein SNR zu erhalten.
Frank

@Frank Tatsächlich habe ich bei jeder Verwendung eines Netzwerkanalysators immer die IFFT eines Spektrum-Sweeps (3 GHz-11 GHz) durchgeführt. In diesem Fall konnte ich keinen IFFT-Verarbeitungsverlust feststellen. Ihr Punkt ist jedoch gültig. Das ließ mich denken, dass FFT-Gewinn und IFFT-Verlust relativ zu den Eigenschaften des betrachteten Signals sind. Betrachten Sie eine Dirac-Delta-Funktion in der Zeit, wenn wir FFT machen, haben wir anstelle von Gewinn einen Verlust. Sind Sie einverstanden?
Lerner

1

Der "Verarbeitungsgewinn" der FFT, der mit zunehmender Anzahl von Bins zunimmt, ist ausschließlich auf ein Definitionsproblem zurückzuführen. Die FFT ist ein "schneller" Algorithmus zur Berechnung der DFT. Normalerweise wird die DFT (und die inverse DFT) wie folgt definiert:

X[k]n=0N1x[n]ej2πnk/N

und

x[n]=1Nk=0N1X[k]e+j2πnk/N

aber es hätte definiert werden können als

X[k]1Nn=0N1x[n]ej2πnk/N

und

x[n]=k=0N1X[k]e+j2πnk/N

und kann sogar definiert werden als

X[k]1Nn=0N1x[n]ej2πnk/N

und

x[n]=1Nk=0N1X[k]e+j2πnk/N

In der letzteren Form gibt es weder für die DFT noch für die iDFT einen "Verarbeitungsgewinn".


Ich verstehe nicht, warum diese Antwort abgelehnt wird. Teil 2 der Frage wird nicht angesprochen, aber es ist definitiv nicht falsch.
Phonon

3
und es beantwortet das Problem der Verstärkung der inversen FFT ebenso wie das Problem der Verstärkung der Vorwärts-FFT. so ist das Leben.
Robert Bristow-Johnson

1
Für den "Verarbeitungsgewinn", über den die anderen Antworten sprechen, spielt es keine Rolle, um welche Normalisierung es sich handelt. Der wichtige Teil ist, wie weit Ihr Grundrauschen in Bezug auf Ihr Signal ist.
Oystein

Also @oystein, "Verarbeitungsverstärkung" gilt nur für das Signal-Rausch-Verhältnis?
Robert Bristow-Johnson

@ Robert Bristow-Johnson, ja, das ist zumindest mein Verständnis. Es spielt keine Rolle, ob Sie Ihr DFT-Ergebnis mit , oder skalieren, da Sie sowohl 'Signal' als auch 'Rauschen' skalieren. NN1
Oystein

1

Der FFT-Verarbeitungsgewinn ergibt sich aus der Tatsache, dass die DFT (von der FFT einfach eine schnelle Implementierung ist) eine nicht normalisierte lineare Transformation ist. Dies ist ein Schluck, also schauen wir uns an, was dies bedeutet.

Ich gehe davon aus, dass Sie wissen, was eine lineare Transformation ist. Wir haben nämlich die Vektoren und und eine Matrix wir habenxyA

y=Ax.

DFT ist eine solche Transformation. Tatsächlich können Sie den MATLAB- dftmtxBefehl verwenden, um diese Matrix basierend auf der Länge des Vektors für Sie zu generieren . Dies ist der Fall,x

y=DFT(x).

Diese Matrix hat einige Eigenschaften. Zuallererst ist es eine quadratische Matrix, was bedeutet, dass sie wahrscheinlich invertierbar ist (und tatsächlich ist es das!). Es sagt uns auch, dass wir im Wesentlichen Komponenten von x nehmen und eine Basisänderung durchführen, die durch die Spalten von , um seine DFT zu erhalten. So weit, ist es gut.EINEIN

Kommen wir nun zu einigen wichtigeren Eigenschaften. Matrix ist orthogonal. Dies bedeutet, dass jede Spalte von senkrecht zu jeder anderen Spalte steht, oder mathematisch gesehen ist eine diagonale Matrix (Sie müssen möglicherweise ein wenig darüber nachdenken, warum dies wahr ist). Dies ist eine sehr schöne Eigenschaft, da wir durch einfaches Transponieren der Matrix etwas erhalten, das ihrer Umkehrung sehr nahe kommt.EINEINEINT.EIN

Um diese Transverse Inverse-Beziehung streng zu machen, soll die Matrix auch normal sein . Dies ist eine Matrix, deren jeder Spaltenvektor die Länge 1 hat. Mit anderen Worten, wenn eine Spalte von , dann ist Wenn eine Matrix sowohl orthogonal als auch normal ist, nennen wir sie orthonormal und in diesem Fall , also in der Tat das inverse ist . Ordentlich!EINeinEINeinT.ein=1.EINT.EIN=ichEINT.EIN

Die übliche DFT-Matrix (oder die übliche DFT-Transformation) ist orthogonal, aber nicht orthonormal. Wenn die DFT-Matrix ist, dann ist wobei die Anzahl der Spalten (oder Zeilen, es ist quadratisch!) In . Um es orthonormal zu machen, sollten wir stattdessen verwenden. Wenn Sie es lange genug betrachten, stellen Sie fest, dass wir sowohl Vorwärts- als auch Rückwärtstransformationen mit skalieren. Wir leisten zusätzliche Arbeit bei der Durchführung der Berechnungen, sodass wir normalerweise nur nach skalieren invers.D.D.T.D.=N.N.D.D.N.1N.1N.

Es gibt bessere theoretische Gründe dafür, dies auf einer Seite zu tun, als auf beiden. Siehe meine Antwort hier für weitere Informationen.


1

Der Verarbeitungsgewinn der FFT bezieht sich auf ein erhöhtes SNR für eine Sinuskurve. Sie können sich die DFT oder die FFT als eine Bank übereinstimmender Filter vorstellen. Das angepasste Filter maximiert das SNR am Ausgang. Eine andere Möglichkeit, die Verarbeitungsverstärkung zu betrachten, wenn Sie im Zeitbereich bei einem bestimmten SNR sinusförmiges Rauschen haben und dann die FFT nehmen und die Sinsoidleistung gegen die Rauschleistung im FFT-Bin betrachten (vorausgesetzt, die Frequenz entspricht genau a FFT bin), dann sehen Sie ein höheres SNR oder einen höheren Verarbeitungsgewinn. Sie können sich die FFT als Bandbreitenfilter vorstellen, und das Rauschen in jedem Frequenzbereich ist im Vergleich zum Zeitbereichssignal verteilt, bei dem das Rauschen durch das Signal hindurchgeht.

Der Verarbeitungsgewinn entsteht, weil er die Komponenten der Sinuskurve kohärent addiert. Sie werden also auch diesen sogenannten kohärenten Gewinn sehen. Diese kohärente Addition ist auch der Grund, warum Sie bei einem längeren Signal mehr Verarbeitungsverstärkung erhalten, dh mehr Samples addieren sich kohärent. Mit kohärent meine ich, dass davon ausgegangen wird, dass Sie die Phase des Signals kennen - in diesem Fall die Frequenz. Alternativ können Sie sich einen länger angepassten Filter mit einer schmaleren Bandbreite vorstellen, damit weniger Rauschen durch den Filter gelangt. So erhalten Sie ein besseres SNR oder einen besseren Verarbeitungsgewinn.

Es ist zu beachten, dass, wenn die Sinuskurve nicht genau mit einer Frequenz eines FFT-Bins ausgerichtet ist, immer noch eine Spitze in der Nähe von FFT-Bins auftritt, aber einige der benachbarten FFT-Bins auch signifikante Größen enthalten. Am nächsten FFT-Bin wird ein Peak auftreten, der jedoch geringer ist als der Verarbeitungsgewinn. Dieser Effekt wird oft als spektrale Leckage bezeichnet. Sie können Fenster verwenden, um die spektrale Leckage zu verringern, aber Sie verringern auch den Verarbeitungsgewinn. Der schlimmste Verlust ist, wenn Ihr Signal genau zwischen zwei FFT-Bin-Frequenzen liegt.

Ich würde vorschlagen, dass Sie die Harris-Zeitung auf Fenstern lesen. Es erklärt viele Details, über die ich spreche.

Wenn Sie also eine Sinuskurve mit weißem Rauschen haben, erhalten Sie den Verarbeitungsgewinn, indem Sie die DFT / FFT verwenden. Wenn Sie die IFFT / IDFT verwenden, entsteht ein Verarbeitungsverlust, da Sie Ihr Signal wieder in das Rauschen übertragen.


-1

Der "Gewinn" bezieht sich auf das gewünschte (und leicht zu erkennende) Wissen. Wenn Sie in den Frequenzbereich transformieren, erhalten Sie explizitere / sichtbarere Kenntnisse (wie in einem grafischen Diagramm zu sehen ist) über bestimmte Frequenzbänder, verlieren jedoch das sichtbare Wissen (können es im FFT-Diagramm nicht mehr sehen) über genaue Zeitinformationen. Wenn Sie zurück in den Zeitbereich transformieren, erhalten Sie genauere Kenntnisse über das Timing (Impulszeit und vorübergehende Änderungen usw.), verlieren jedoch das sichtbare Wissen (wenn Sie das vorherige FFT-Diagramm wegwerfen) darüber, welche Frequenzbänder diese Zeit haben. Domänenwellenform stimuliert.

Es gibt keinen tatsächlichen Gewinn in der inhärenten Information, die entweder im Zeit- oder im Frequenzvektor vorhanden ist, wahrscheinlicher einige winzige Verluste aufgrund der numerischen Genauigkeit innerhalb der FFT.

Durch Erhöhen der Abtastrate eines bereits bandbegrenzten Signals (bereits unter Nyquist bei der niedrigeren Abtastrate) werden keine neuen Informationen hinzugefügt (außer möglicherweise die Abtastdaten weiter von Anti-Alias-Filterverzerrungen entfernt und Quantisierungsrauschen verteilt). Es gibt nichts Neues, um mehr "Gewinn" hinzuzufügen.

Das Erhöhen der Gesamtzeit des Abtastvektors (nicht mit Null-Padding, sondern mit tatsächlich relevanteren Daten) kann jedoch neue Informationen hinzufügen, die es ermöglichen können, die "Verstärkung" zu verarbeiten, um das Grundrauschen zu verringern, insbesondere bei einem stationären Signal.

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.