Der erste Schritt besteht darin, zu überprüfen, ob sowohl Ihre Startabtastrate als auch Ihre Zielabtastrate rationale Zahlen sind . Da sie ganze Zahlen sind, sind sie automatisch rationale Zahlen. Wenn eine von ihnen keine rationale Zahl wäre, wäre es immer noch möglich, die Abtastrate zu ändern, aber es ist ein ganz anderer Prozess und schwieriger.
22∗ 32∗ 52∗ 7227∗ 5332∗ 7225∗ 5
Die vorherigen Schritte müssen ausgeführt werden, unabhängig davon, wie Sie die Daten erneut abtasten möchten. Lassen Sie uns nun darüber sprechen, wie es mit FFTs gemacht wird. Der Trick beim Resampling mit FFTs besteht darin, FFT-Längen auszuwählen, mit denen alles gut funktioniert. Dies bedeutet, dass eine FFT-Länge ausgewählt wird, die ein Vielfaches der Dezimierungsrate ist (in diesem Fall 441). Für das Beispiel wählen wir eine FFT-Länge von 441, obwohl wir 882 oder 1323 oder ein anderes positives Vielfaches von 441 hätten wählen können.
Um zu verstehen, wie dies funktioniert, ist es hilfreich, es zu visualisieren. Sie beginnen mit einem Audiosignal, das im Frequenzbereich ungefähr so aussieht wie in der folgenden Abbildung.
Wenn Sie mit Ihrer Verarbeitung fertig sind, möchten Sie die Abtastrate auf 16 kHz verringern, aber Sie möchten so wenig Verzerrungen wie möglich. Mit anderen Worten, Sie möchten einfach alles aus dem obigen Bild von -8 kHz bis +8 kHz behalten und alles andere fallen lassen. Das ergibt das Bild unten.
Bitte beachten Sie, dass die Abtastraten nicht maßstabsgetreu sind, sondern nur zur Veranschaulichung der Konzepte dienen.
25∗ 5
Wie Sie vielleicht vermuten, gibt es einige potenzielle Probleme. Ich werde jeden einzelnen durchgehen und erklären, wie Sie sie überwinden können.
Was tun Sie, wenn Ihre Daten kein schönes Vielfaches des Dezimierungsfaktors sind? Sie können dies leicht überwinden, indem Sie das Ende Ihrer Daten mit genügend Nullen auffüllen, um ein Vielfaches des Dezimierungsfaktors daraus zu machen. Die Daten werden aufgefüllt, bevor sie mit der FFT versehen werden.
ll - 1Nullen (bitte beachten Sie, dass die Anzahl der Datenabtastwerte und die Anzahl der Auffüllabtastwerte BEIDE ein positives Vielfaches des Dezimierungsfaktors sein müssen - Sie können die Auffüllungslänge erhöhen, um diese Einschränkung zu erfüllen), FFT'-Auffüllen der aufgefüllten Daten und Multiplizieren des Frequenzbereichs Daten und Filter, und dann Aliasing der Hochfrequenzergebnisse (> 8 kHz) in die Niederfrequenzergebnisse (<8 kHz), bevor die Hochfrequenzergebnisse gelöscht werden. Da das Filtern im Frequenzbereich für sich genommen ein großes Thema ist, kann ich in dieser Antwort leider nicht näher darauf eingehen. Ich werde jedoch sagen, dass Sie, wenn Sie die Daten in mehr als einem Block filtern und verarbeiten, Overlap-and-Add oder Overlap-and-Save implementieren müssen , um die Filterung kontinuierlich zu gestalten.
Ich hoffe das hilft.
BEARBEITEN: Der Unterschied zwischen der Startanzahl der Frequenzbereichsabtastwerte und der Zielanzahl der Frequenzbereichsabtastwerte muss gleichmäßig sein, damit Sie die gleiche Anzahl von Abtastwerten von der positiven Seite der Ergebnisse wie von der negativen Seite der Ergebnisse entfernen können. In unserem Beispiel war die Startanzahl der Abtastwerte die Dezimierungsrate oder 441, und die Zielanzahl der Abtastwerte war die Interpolationsrate oder 160. Die Differenz beträgt 279, was nicht gerade ist. Die Lösung besteht darin, die FFT-Länge auf 882 zu verdoppeln, wodurch sich die Zielanzahl der Abtastwerte ebenfalls auf 320 verdoppelt. Jetzt ist der Unterschied gerade und Sie können die entsprechenden Frequenzbereichsabtastungen ohne Probleme löschen.