signal-processing

___ qstnhdr ___ Verwirrung mit FFT-Algorithmus ___ tag123algorithm ___ Ein Algorithmus ist eine Folge wohldefinierter Schritte, die eine abstrakte Lösung für ein Problem definieren. Verwenden Sie dieses Tag, wenn sich Ihr Problem auf den Algorithmusentwurf bezieht. ___ answer5030112 ___

Ein rechteckiges Fenster der Länge M hat eine Frequenzantwort von %code% , die Null ist, wenn %code% , für k ∈ 0. Für eine DFT der Länge N, wo %code% , gibt es Nullen bei %code% . Das Verhältnis N / M ist nicht notwendigerweise eine ganze Zahl. Wenn zum Beispiel N = 40 und M = 32, dann gibt es Nullen bei Vielfachen von 1,25, aber nur die ganzzahligen Vielfachen erscheinen in der DFT, was in diesem Fall die Bins 5, 10, 15 und 20 ist. p>

Hier ist ein Diagramm der 1024-Punkte-DFT eines rechteckigen 32-Punkt-Fensters:

%Vor%

Beachten Sie die Nullen bei jedem N / M = 32 Bins. Wenn N = M (d. H. Die Fensterlänge ist gleich der DFT-Länge), dann gibt es Nullen bei allen Bins außer bei n = 0.

Wenn Sie ein Fenster mit einem Signal multiplizieren, ist die entsprechende Operation im Frequenzbereich die kreisförmige Faltung des Fensterspektrums mit dem Signalspektrum. Zum Beispiel ist die DTFT einer Sinuskurve eine gewichtete Delta-Funktion (d. H. Ein Impuls mit unendlicher Höhe, infinitesimaler Ausdehnung und endlicher Fläche), der sich bei der positiven und negativen Frequenz der Sinuskurve befindet. Wenn ein Spektrum mit einer Delta-Funktion gefaltet wird, verschiebt es es einfach an den Ort des Deltas und skaliert es durch das Gewicht des Deltas. Wenn Sie daher ein Fenster mit einer Sinuskurve in der Sample-Domäne multiplizieren, wird die Frequenzantwort des Fensters skaliert und auf die Frequenz der Sinuskurve verschoben.

Es gibt einige Szenarien, die hinsichtlich der Länge eines rechteckigen Fensters untersucht werden müssen. Zuerst betrachten wir den Fall, in dem die Fensterlänge ein ganzzahliges Vielfaches der Sinusperiode ist, z. ein rechteckiges Fenster mit 32 Abtastwerten eines Kosinus mit einer Periode von 32/8 = 4 Abtastungen:

%Vor%

Wie zuvor gibt es Nullen bei Vielfachen von N / M = 32. Aber das Spektrum des Fensters wurde in den Bereich 256 der Sinuskurve verschoben und skaliert durch seine Größe, die 0,5 geteilt ist zwischen der positiven Frequenz und der negativen Frequenz ( Ich zeichne nur positive Frequenzen auf). Wenn die DFT-Länge 32 gewesen wäre, würden sich die Nullen an jeder Stelle anordnen, was zu dem Aussehen führen würde, dass es keine Lecks gibt. Aber diese irreführende Erscheinung ist nur eine Funktion der DFT-Länge. Wenn Sie das gefensterte Signal mit Nullen auffüllen (wie oben), werden Sie die sinc-artige Antwort bei Frequenzen zwischen den Nullen sehen.

Sehen wir uns nun einen Fall an, in dem die Fensterlänge kein ganzzahliges Vielfaches der Sinusperiode ist, z.B. ein Kosinus mit einer Winkelfrequenz von 7,5π / 16 (der Zeitraum beträgt 64 Abtastungen):

%Vor%

Die Position des mittleren Fachs befindet sich nicht länger auf einem ganzzahligen Vielfachen von 32, sondern ist um eine Hälfte nach Fach 240 verschoben. Sehen wir uns an, wie die entsprechende 32-Punkte-DFT aussehen würde (folgernd ein rechteckiges 32-Punkte-Fenster). Ich berechne und zeichne die 32-Punkte-DFT von x2 [n] und überlagere auch eine 32x dezimierte Kopie der 1024-Punkte-DFT:

%Vor%

Wie Sie im vorherigen Diagramm sehen können, sind die Nullen nicht mehr auf ein Vielfaches von 32 ausgerichtet, so dass die Größe der 32-Punkte-DFT in jeder Bin ungleich Null ist. In der 32-Punkte-DFT sind die Nullen des Fensters immernoch mit jedem N / M = 32/32 = 1 bin beabstandet, aber da ω0 = 7,5 π / 16, liegt das Zentrum bei "bin" 7,5, was die Nullen bei 0,5, 1,5 setzt usw., so dass sie in der 32-Punkte-DFT nicht vorhanden sind.

Die allgemeine Meldung besagt, dass der spektrale Verlust eines Fenstersignals immer vorhanden ist, aber in der DFT maskiert werden kann, wenn Signalspektrum, Fensterlänge und DFT-Länge genau richtig zusammenpassen Richte die Nullen aus. Darüber hinaus sollten Sie diese DFT-Artefakte einfach ignorieren und sich auf die DTFT Ihres Signals konzentrieren (d. H. Mit Nullen auffüllen, um die DTFT mit höherer Auflösung abzutasten, so dass Sie die Leckage eindeutig untersuchen können).

Spektralverluste, die durch Faltung mit dem Spektrum eines Fensters verursacht werden, sind immer vorhanden, weshalb die Kunst des Formens besonders geformter Fenster so wichtig ist. Das Spektrum jedes Fenstertyps wurde für eine bestimmte Aufgabe wie Dynamikbereich oder Empfindlichkeit angepasst.

Hier ist ein Beispiel, das die Ausgabe eines rechteckigen Fensters mit einem Hamming-Fenster vergleicht:

%Vor%

    
___ answer5013348 ___

Wenn Sie die Beispielwerte nicht ändern und dieselbe Datenlänge wie die FFT-Länge auswählen, entspricht dies der Verwendung eines rechteckigen Fensters. In diesem Fall sind der Rahmen und das Fenster identisch. Das Multiplizieren der Eingangsdaten mit einem rechteckigen Fenster im Zeitbereich ist jedoch dasselbe wie das Falten des Spektrums des Eingangssignals mit einer Sinc-Funktion in der Frequenzdomäne, wodurch spektrale Spitzen für Frequenzen, die in der FFT-Blende nicht exakt periodisch sind, gespreizt werden gesamtes Spektrum.

Nicht-rechteckige Fenster werden oft verwendet, so dass das resultierende FFT-Spektrum mit etwas mehr "konzentriert" als eine Sinc-Funktion gefaltet wird.

Sie können auch ein rechteckiges Fenster verwenden, das eine andere Größe als die FFT-Länge oder Blende hat. Im Fall eines kürzeren Datenfensters kann der FFT-Rahmen mit Null gepolt sein, was zu einem glatter aussehenden interpolierten FFT-Ergebnisspektrum führen kann. Sie können sogar ein rechteckiges Fenster verwenden, das länger ist als die Länge der FFT, indem Sie Daten rund um die FFT-Blende in einer summierten kreisförmigen Weise für einige interessante Effekte mit der Frequenzauflösung einwickeln.

HINZUGEFÜGT aufgrund einer Anfrage:

Die Multiplikation mit einem Fenster in der Zeitdomäne führt zu demselben Ergebnis wie die Faltung mit der Transformation dieses Fensters in der Frequenzdomäne.

Im Allgemeinen erzeugt ein engeres Zeitbereichsfenster eine breiter aussehende Frequenzbereichs-Transformation. Dies ist der Grund, warum Zero-Padding ein glatteres Frequenzdiagramm erzeugt. Das engere Zeitbereichsfenster erzeugt einen breiteren Sinc mit fetteren und glatteren Kurven in Bezug auf die Rahmenbreite als ein Fenster mit der vollen Breite des FFT-Rahmens, wodurch die Ergebnisse der interpolierten Frequenz glatter erscheinen als eine nicht gefüllte FFT derselben Rahmenlänge.

Das Gegenteil trifft auch zu. Ein breiteres rechteckiges Fenster erzeugt einen schmaleren Sinc, wobei die Nullen näher an der Spitze liegen. Sie können also ein sorgfältig ausgewähltes, breiteres Fenster verwenden, um ein schmaler aussehendes Sinc zu erzeugen, um eine Frequenz näher an einer interessierenden Bin zu löschen als 1 Frequenzfach entfernt. Wie benutzt du ein breiteres Fenster? Wickeln Sie die Daten um und addieren Sie sie, was der Verwendung von FT-Basisvektoren entspricht, die nicht auf 1 FFT-Frame in der Länge abgeschnitten sind. Da jedoch der FFT-Ergebnisvektor dabei kürzer als die Daten ist, ist dies ein verlustreicher Prozess, der Artefakte einführt und einige neue Alias-Effekte einführt. Aber es gibt Ihnen einen schärferen Frequenzauswahl-Peak bei jedem Bin und Kerbfilter, die weniger als 1 Bin entfernt platziert werden können, sagen etwa auf halber Strecke zwischen den Bins, etc.

    
___ answer5012158 ___
  

Was ist der Zweck der Fensterfunktion?

Es geht um sogenanntes "Spectral Leakage": Die FFT nimmt eine unendliche Reihe an, die den gegebenen Sample Frame immer wieder wiederholt. Wenn Sie eine Sinuswelle haben, bei der es sich um eine ganzzahlige Anzahl von Zyklen innerhalb des Sample-Rahmens handelt, dann ist alles gut und die FFT gibt Ihnen einen schönen schmalen Peak bei der richtigen Frequenz. Aber wenn Sie eine Sinuswelle haben, die keine ganzzahlige Anzahl von Zyklen ist, gibt es eine Diskontinuität zwischen der letzten und ersten Probe, und die FFT gibt Ihnen falsche Harmonische.

Windowing-Funktionen senken die Amplituden am Anfang und am Ende des Sample-Frames, um die durch diese Diskontinuität verursachten Oberwellen zu reduzieren.

einige Diagramme von einer Webseite von National Instruments zum Thema Windowing :

integrale Anzahl von Zyklen:

nicht ganzzahlige Anzahl von Zyklen:

für zusätzliche Informationen:

Ссылка

Ссылка

Ссылка

    
___ tag123fft ___ Abkürzung für Fast Fourier Transform, ein beliebiger Algorithmus zur schnellen Berechnung der diskreten Fourier-Transformation. ___ qstntxt ___

Ich versuche den FFT-Algorithmus zu verstehen, und soweit ich weiß, verstehe ich das Hauptkonzept dahinter. Ich bin jedoch verwirrt über den Unterschied zwischen 'framesize' und 'window'.

Nach meinem Verständnis scheint es, dass sie miteinander redundant sind? Zum Beispiel präsentiere ich als Eingabe einen Block von Samples mit einer Framegröße von 1024. Also habe ich das Byte [1024] als Eingabe dargestellt.

Was ist der Zweck der Fensterfunktion? Seit Anfang dachte ich, der Zweck der Fensterfunktion ist, den Block von Proben aus den Originaldaten auszuwählen.

Danke!

    
___ tag123signalverarbeitung ___ AKA digitale Signalverarbeitung (DSP). Ein Signal ist ein Information tragendes Änderungsattribut einer Entität, aber im digitalen Sinn bezieht sich "Signal" entweder auf empfangene oder übertragene Datenströme / Datenblöcke, die üblicherweise reale Größen wie Audiopegel, Helligkeit, Druck usw. darstellen Zeit oder Entfernung. "Verarbeitung" ist die Handlung des Änderns, Analysierens oder Charakterisierens der Daten, um Informationen, die dem fraglichen Signal innewohnen, abzurufen / zu modifizieren. ___
3
Antworten

Vergleichen von Audioaufnahmen

Ich habe 5 WAV-Dateien aufgenommen. Ich möchte die neu eingehenden Aufnahmen mit diesen Dateien vergleichen und feststellen, welcher es am meisten ähnelt. Im fertigen Produkt muss ich es in C ++ unter Linux implementieren, aber jetzt experime...
16.08.2011, 12:30
3
Antworten

Implementieren Sie die Echtzeit-Signalverarbeitung in Python - wie wird Audio kontinuierlich aufgezeichnet?

Ich habe vor, einen "DSP-ähnlichen" Signalprozessor in Python zu implementieren. Es sollte kleine Fragmente von Audio über ALSA erfassen, sie verarbeiten und dann über ALSA abspielen. Um etwas anzufangen, schrieb ich den folgenden (sehr einfa...
05.01.2016, 19:30
2
Antworten

Android aktive Geräuschunterdrückung

Ich arbeite an einem etwas ehrgeizigen Projekt, um eine aktive Lärmreduzierung auf Android mit Ohrhörern oder Kopfhörern zu erreichen. Mein Ziel ist es, Umgebungsgeräusche mit dem Android-Phone-Mikrofon aufzunehmen, die Phase zu invertieren (...
22.11.2013, 20:03
2
Antworten

Mehrkanal-Blindentfaltung in der einfachsten Formulierung: Wie löst man?

Kürzlich habe ich angefangen, Dekonvolutionsalgorithmen zu studieren und das folgende Akquisitionsmodell zu treffen: Dabei ist f das ursprüngliche (latente) Bild, g ist das Eingabe- (beobachtete) Bild, h ist die Punktspreizungsfunkt...
19.02.2016, 20:51
1
Antwort

Swift FFT - Komplexes Split-Problem

Ich versuche, FFT in einer Audiodatei zu finden, um die Frequenz mithilfe des Accelerate-Frameworks zu finden. Ich habe Code (wahrscheinlich falsch) von dieser Frage angepasst: Spektrogramm von AVAudioPCMBuffer verwenden Beschleunige das Fr...
11.10.2015, 15:04
2
Antworten

FSK-Demodulation - Analyse japanischer EWS-Daten

【Dies ist kein Duplikat. Ähnliche Fragen betreffen Szenarien, in denen Menschen die Kontrolle über die Quelldaten haben. Ich nicht.】 In Japan gibt es etwas, das "Emergency Warning Broadcasting System" genannt wird. So sieht es aus, wenn es ak...
06.12.2013, 07:41
1
Antwort

Die Herzfrequenz von einem einfachen Video abrufen: Code innen

Ich versuche eine Herzfrequenz aus einem Video meiner Haut zu finden. Um dies zu tun, nehme ich ein beschnittenes Rechteck von Pixeln von meinem Videoframe und mittle die rote (oder grüne) Komponente in all diesen Pixeln (dann natürlich, wenn ma...
12.06.2014, 17:18
1
Antwort

Hinzufügen von Effekten, um die Stimme wie über ein Telefon klingen zu lassen

Ich verstehe, dass wenn eine Person über ein Telefon spricht, er wegen der Frequenzantwort des verwendeten Mikrofons / Kanals / Lautsprechers ein wenig anders klingt. Ich habe mit der Verarbeitung von Sprachsignalen in Python gespielt. Ich ha...
19.02.2014, 05:27
3
Antworten

Python-Paket für die Signalverarbeitung

Ich suche nach einem Python-Paket, um eine effiziente Constant Q-Transformation durchzuführen (dh mit einer FFT, um den Prozess zu beschleunigen). Ich habe eine Toolbox namens CQ-NSGT / sliCQ Toolbox gefunden, aber ich erhalte den folgenden Fehl...
11.04.2013, 15:06
3
Antworten

Wie kann man eine Toneingabe mit einem vorbestimmten Ton vergleichen?

Ausarbeiten: Angenommen, ich spiele ein G auf meiner Gitarre und meine Soundkarte hat eine Eingabe gemacht. Wie kann ich meinen Computer erkennen lassen, dass es G ist? (Keine Einschränkungen in der Programmiersprache, obwohl Python oder C be...
07.11.2011, 11:24