"Y a-t-il une application pratique?" Certainement oui, au moins pour vérifier le code et les erreurs liées.
"En théorie, la théorie et la pratique correspondent. En pratique, ce n'est pas le cas." Donc, mathématiquement, non, comme l'a répondu Matt. Parce que (comme déjà répondu), (jusqu'à un facteur d'échelle potentiel). Cependant, elle peut être utile sur le plan informatique, car l'équation ci-dessus est généralement implémentée via la transformée de Fourier discrète et son avatar rapide, la FFT.F(F(x(t)))=x(−t)
Une première raison vient de la volonté de vérifier que l'implémentation de Fourier, qu'elle soit codée par vous, par quelqu'un d'autre ou à partir d'une bibliothèque, fait ce qu'elle doit faire sur vos données. L'ordre des échantillons, les facteurs d'échelle, les limites sur le type d'entrée (réalité, profondeur de bits) ou la longueur sont des sources d'erreurs ultérieures potentielles pour les implémentations de Fourier comme la FFT. Donc, pour vérifier la validité, il est toujours bon de vérifier que les versions implémentées héritent, au moins approximativement, des propriétés théoriques. Comme vous le verrez, comme le montre Machupicchu, vous ne récupérez pas exactement une entrée réelle inversée: souvent, la partie imaginaire n'est pas exactement zéro, et la partie réelle est ce qui était attendu, mais dans une petite erreur relative, en raison de calculs informatiques imparfaits (virgule flottante) dans une tolérance dépendante de la machine. Ceci est rendu visible sur l'image suivante. La FFT est appliquée deux fois sur un signal aléatoire de 32 échantillons et inversée. Comme vous pouvez le voir, l'erreur est faible, en utilisant des flotteurs à double précision.
Si l'erreur n'est pas relativement faible, il peut y avoir des erreurs dans le code que vous utilisez.
Une seconde concerne d'énormes volumes de données ou de grandes quantités de calculs FFT itérés, comme avec la tomographie. Là, les petites erreurs relatives précédentes peuvent s'accumuler et se propager, et même induire des divergences de calcul ou des erreurs certains détails ici . Ceci est rendu visible sur l'image suivante. Pour un signal pas si long ( échantillons ), nous effectuons les itérations suivantes:
où désigne la FFT. Le chiffre affiché est sous-échantillonné. Et nous calculons l'erreur maximaleà chaque itération.x01e6xk+1=Re(f(f(f(f(xk)))))
fmax|xk−x0|
Comme vous pouvez le voir, l'ordre de grandeur de l'erreur a changé, en raison de la taille du signal. De plus, l'erreur maximale augmente régulièrement. Après itérations, il reste suffisamment petit. Mais vous pouvez deviner qu'avec un cube -voxel et des millions d'itérations, cette erreur peut devenir non négligeable.10001000×1000×1000
Limiter l'erreur et évaluer son comportement sur des itérations peut aider à détecter de tels comportements, puis à les réduire par un seuillage ou un arrondi approprié.
Information additionnelle:
Non, prendre la transformée de Fourier deux fois équivaut à une inversion temporelle (ou une inversion de la dimension dans laquelle vous vous trouvez). Vous obtenez simplement fois une constante qui dépend du type de mise à l'échelle que vous utilisez pour la transformée de Fourier.x(−t)
La transformée de Fourier inverse appliquée à un signal du domaine temporel donne simplement le spectre avec inversion de fréquence. Jetez un œil à cette réponse pour plus de détails.
la source
Alors que prendre la transformée de Fourier directement deux fois de suite vous donne juste une inversion temporelle triviale qui serait beaucoup moins chère à mettre en œuvre sans FT, il y a des choses utiles qui peuvent être faites en prenant une transformée de Fourier, en appliquant une autre opération, puis à nouveau Fourier transformant le résultat de cela. L'exemple le plus connu est l' autocorrélation , qui est une sorte de convolution d'un signal avec lui-même. Et les convolutions sont O ( n 2 ) si elles sont mises en œuvre naïvement, mais seulement O ( n · log n) lors d'un détour par transformée de Fourier. Ainsi, l'autocorrélation est généralement effectuée en effectuant un signal FT, en prenant le carré absolu et en le réintégrant dans le domaine temporel.
la source
La transformée de Fourier 2D (2D DFT) est utilisée dans le traitement d'image car une image peut être vue comme un signal 2D. Par exemple, pour une image en niveaux de gris , , cela signifie qu'aux coordonnées et l'image a une valeur d'intensité z. Regardez ceci par exemple:I I(x,y)=z x y
https://ch.mathworks.com/help/matlab/ref/fft2.html
Essaye ça:
et comparer à:
plutôt comme ça. J'ai appliqué fft2 à fois, pas ifft2 la deuxième fois. Je pense que cela illustre ce que @Matt L. a dit:
"prendre la transformée de Fourier deux fois équivaut à une inversion temporelle",
vous pouvez voir que l'image est inversée à cause du négatif imaginaire -i au lieu du positif dans ifft ().
Je l'ai également fait pour un signal 1D (par exemple temporel):
la source
Pour répondre à la deuxième question, dans les communications numériques , il est une technique utilisée dans les téléphones cellulaires en ce moment qui fait bon usage de l' application de la IFFT à un signal dans le domaine temporel. L'OFDM applique un IFFT à une séquence de données du domaine temporel au niveau de l'émetteur, puis l'inverse avec une FFT au niveau du récepteur. Alors que la littérature aime utiliser IFFT-> FFT, cela ne fait vraiment aucune différence lequel vient en premier.
Le principal avantage ici est fortement lié à la réponse de leftaroundabout. Il existe un type de distorsion appelé évanouissement par trajets multiples , et les téléphones portables dans les zones urbaines denses doivent y faire face en grande partie. Nous aimons modéliser l'évanouissement par trajets multiples comme une convolution avec des coefficients inconnus. Parce que la chaîne d'événements ressemble à IFFT-> Transmit-> Appliquer les trajets multiples-> Recevoir-> FFT, l'évanouissement par trajets multiples passera par la FFT et deviendra une simple multiplication point par point avec des valeurs inconnues. Ces valeurs sont beaucoup plus faciles à prévoir et à corriger que les coefficients de convolution.
Cet effet rend également un signal plus résistant aux trajets multiples / évanouissement qui pourraient supprimer (ou "annuler") un canal de fréquence entier. Cet article décrit comment
la source
Cette information a été fournie par l'utilisateur "Birdwes", mais il n'avait pas assez de réputation pour le poster lui-même donc je vais le poster ici pour lui car il semble pertinent et utile.
"Je n'ai pas assez de points dans ce forum pour ajouter un commentaire, donc je le fais ici: jetez un œil au code source d'Accord.Math Hilbert Transform et vous verrez pourquoi cela peut être une option viable: https: //github.com/primaryobjects/Accord.NET/blob/master/Sources/Accord.Math/Transforms/HilbertTransform.cs
Les utilisations pratiques incluent la construction d'émetteurs SSB ou presque n'importe quel plan de modulation. Recherchez la modulation IQ et vous comprendrez pourquoi le déphasage de -90 degrés est pertinent. Un produit de principes trigonométriques. par exemple https://user.eng.umd.edu/~tretter/commlab/c6713slides/ch7.pdf
La transformation de Hilbert utilise une étape intermédiaire entre les FFT de mise à zéro des composants négatifs. Vous pouvez en abuser pour filtrer également les autres fréquences. "
la source