2016-04-13 1 views
0

J'essaie donc d'effectuer un décalage de fréquence sur un ensemble de points réels. Pour obtenir un décalage de fréquence, il faut multiplier les données par une exponentielle complexe, ce qui complexifie les données qui en résultent. Si je ne multiplie que par un cosinus, j'obtiens des résultats aux fréquences de somme et de différence. Je veux juste la somme ou la différence. Ce que j'ai fait est de multiplier les données par une exponentielle complexe, utiliser fft.fft() pour calculer le fft, puis utiliser fft.irfft() sur les fréquences positives uniquement pour obtenir un jeu de données de valeur réelle qui n'a qu'un somme ou différence de décalage en fréquence. Cela semble bien fonctionner, mais je veux savoir s'il y a des inconvénients à le faire, ou peut-être un moyen plus approprié d'atteindre le même objectif. Merci d'avance pour toute aide que vous pouvez fournir!En python, Si j'effectue un fft sur des données complexes, alors n'effacer que les fréquences positives, comment cela affecte-t-il les données?

+0

Pas vraiment un problème. La FFT des données réelles est redondante dans le domaine spectral (doit être, vous ne mettez que N valeurs, les valeurs 2N ne peuvent pas être dépendantes) La suppression des fréquences négatives ne supprime pas les informations, sauf si vous appliquez un traitement différent à ces négatifs et vouloir garder l'info. Je garde toutes les fréquences avant IFFT, mais vous n'avez pas à le faire. – roadrunner66

+0

@ reoadrunner66 Mais ce n'est pas la FFT des données réelles. J'ai multiplié les données réelles par un nombre complexe (s) qui le rend _complex_ data. Je prends alors la FFT complète dans laquelle les fréquences négatives ne sont pas nécessairement redondantes. Je ne nourris alors que les fréquences positives de cela dans l'IRFFT à quel point la fonction IRFFT suppose que les fréquences négatives sont des conjugués des positifs, donc redondants, quand ils ne sont pas en général. – jmurray1241

+0

Si vous multipliez par un seul nombre complexe (une phase fixe), vous ne devez pas augmenter le contenu de l'information. Mais il faudrait regarder la solution analytique. – roadrunner66

Répondre

1

Ce que vous faites est parfaitement bien. Vous générez le signal analytique pour accommoder les fréquences négatives de la même manière qu'une transformée de Hilbert discrète. Vous aurez quelques problèmes de mise à l'échelle - vous devez doubler tous les signaux non-DC et non-Nyquist dans la partie de fréquence réelle des résultats FFT. Quelques problèmes pratiques sont que cette méthode donne un retard de la taille de la fenêtre, donc si vous essayez de le faire en temps réel, vous devriez probablement examiner en utilisant un transformateur FIR Hilbert et les sommes appropriées. Le retard sera le retard de groupe du transformateur Hilbert dans ce cas. Un autre sujet de préoccupation est que vous devez vous rappeler que la composante CC de votre signal se décalera également avec toutes les autres fréquences. En tant que tel, je recommande que vous avilir les données (enregistrer la valeur) avant de déplacer, mettre à zéro le bac CC après que vous FFT les données (pour supprimer la composante de fréquence a fini dans le bac DC), puis ajouter la moyenne pour préserver le niveaux de signal à la fin.

+0

Génial! J'étais inquiet à l'idée d'être trop beau pour être vrai. En ce qui concerne la mise à l'échelle, êtes-vous sûr du facteur de deux dans les fréquences réelles? Pour ma compréhension, rfft/irfft font le même calcul et supposons simplement que les fréquences négatives sont conjuguées aux positives et en tant que telles renvoie des fréquences positives/valeurs réelles en conséquence. – jmurray1241

+0

En ce qui concerne le délai, il s'agit d'une temporisation égale à la taille de la fenêtre de mon fft? Le transformateur Hilbert est destiné à le contrecarrer? En outre, la composante CC est-elle importante si vous n'avez pas besoin des amplitudes absolues, c'est-à-dire si vous souhaitez simplement démoduler un signal RF? – jmurray1241

+0

Vous jetez la moitié de votre énergie si vous ne gardez que les fréquences positives. Donc, le facteur 2 est juste. Comme je l'ai dit plus tôt, vous ne jetez pas d'informations. Faites simplement la FFT analytique d'un signal réel, divisé en cosinus et en parties sinusoïdales, appliquez les règles de symétries (cosinus symétrique, sinus antisymétrique) et vous pourrez prouver pourquoi vous allez bien, en faisant ce que vous faites. – roadrunner66