2016-04-13 13 views
0

Also versuche ich eine Frequenzverschiebung an einer Reihe von reellen Punkten durchzuführen. Um eine Frequenzverschiebung zu erreichen, müssen die Daten mit einem komplexen Exponential multipliziert werden, wodurch die resultierenden Daten komplex werden. Wenn ich nur mit einem Kosinus multipliziere, bekomme ich Ergebnisse sowohl bei der Summen- als auch bei der Differenzfrequenz. Ich will nur die Summe oder den Unterschied.In Python, wenn ich ein fft auf komplexen Daten durchführen, dann nur die positiven Frequenzen irfft, wie wirkt sich das auf die Daten aus?

Ich habe die Daten mit einem komplexen Exponential multipliziert, fft.fft() verwendet, um das fft zu berechnen, dann fft.irfft() nur für die positiven Frequenzen verwendet, um einen reellwertigen Datensatz zu erhalten, der nur a hat Summen- oder Differenzverschiebung der Frequenz. Dies scheint gut zu funktionieren, aber ich möchte wissen, ob es irgendwelche Nachteile gibt, um dies zu erreichen, oder vielleicht ein geeigneterer Weg, um das gleiche Ziel zu erreichen. Vielen Dank im Voraus für jede Hilfe, die Sie zur Verfügung stellen können!

+0

Nicht wirklich ein Problem. Die FFT von realen Daten ist in der Spektraldomäne redundant (es müssen nur N Werte eingegeben werden, 2N Werte können nicht abhängig sein). Das Auslassen der negativen Frequenzen entfernt keine Informationen, es sei denn, Sie wenden eine andere Behandlung für diese Negative und an möchte die Info behalten. Ich halte alle Frequenzen vor IFFT, aber Sie müssen nicht. – roadrunner66

+0

@ reoadrunner66 Aber es ist nicht die FFT von realen Daten. Ich habe die realen Daten mit einer komplexen Zahl (s) multipliziert, die es _complex_ Daten macht. Ich nehme dann die volle FFT, in der die negativen Frequenzen nicht unbedingt redundant sind. Ich füttere dann nur die positiven Frequenzen davon in IRFFT, an welchem ​​Punkt die IRFFT-Funktion annimmt, dass die negativen Frequenzen Konjugate der Positiven sind, also redundant, wenn sie _nicht_ im Allgemeinen sind. – jmurray1241

+0

Wenn Sie mit nur einer komplexen Zahl (einer festen Phase) multiplizieren, sollten Sie den Informationsgehalt nicht erhöhen. Aber man müsste sich die analytische Lösung anschauen. – roadrunner66

Antwort

1

Was Sie tun, ist völlig in Ordnung. Sie erzeugen das analytische Signal, um die negativen Frequenzen auf die gleiche Weise aufzunehmen, wie dies bei einer diskreten Hilbert-Transformation der Fall wäre. Sie werden einige Skalierungsprobleme haben - Sie müssen alle Nicht-DC- und Nicht-Nyquist-Signale im tatsächlichen Frequenzteil der FFT-Ergebnisse verdoppeln.

Einige praktische Bedenken sind, dass diese Methode eine Verzögerung der Fenstergröße verursacht. Wenn Sie also versuchen, dies in Echtzeit zu tun, sollten Sie wahrscheinlich einen FIR-Hilbert-Transformator und die entsprechenden Summen untersuchen. Die Verzögerung ist in diesem Fall die Gruppenverzögerung des Hilbert-Transformators.

Ein weiteres Problem ist, dass Sie sich daran erinnern müssen, dass die DC-Komponente Ihres Signals auch mit allen anderen Frequenzen verschoben wird. Daher würde ich empfehlen, dass Sie die Daten vor dem Verschieben verkleinern (den Wert speichern), den DC-Bin auf Null setzen, nachdem Sie die Daten abgetastet haben (um jede Frequenzkomponente in der DC-Bin zu entfernen) Signalpegel am Ende.

+0

Super! Ich war besorgt, dass es zu schön war, um wahr zu sein. Was die Skalierung betrifft, sind Sie sich über den Faktor 2 in den echten Frequenzen sicher? Nach meinem Verständnis macht rfft/irfft die gleiche Berechnung und nimmt einfach an, dass die negativen Frequenzen zu den positiven konjugiert sind und dementsprechend positive Frequenzen/reale Werte zurückgeben. – jmurray1241

+0

Soweit die Verzögerung, ist es eine Zeitverzögerung gleich der Fenstergröße meines fft? Der Hilbert-Transformator soll dem entgegenwirken? Ist die Gleichstromkomponente auch wichtig, wenn Sie nicht die absoluten Amplituden benötigen, d. H. Wenn Sie nur ein HF-Signal demodulieren möchten? – jmurray1241

+0

Sie werfen die Hälfte Ihrer Energie weg, wenn Sie nur die positiven Frequenzen behalten. Also ist der Faktor 2 richtig. Wie ich bereits sagte, werfen Sie keine Informationen weg. Machen Sie einfach die analytische FFT eines reellen Signals, aufgeteilt in Kosinus- und Sinus-Teile, wenden Sie die Symmetries-Regeln an (Kosinus symmetrisch, Sinus antisymmetrisch) und Sie können beweisen, warum es Ihnen gut geht, was Sie tun. – roadrunner66