Hilbert (FPScript)

21.09.2021

Calcule la transformée de Hilbert. Utilisé fréquemment pour calculer l'amplitude ou la fréquence instantanée ainsi que pour la démodulation des signaux.

Syntaxe

Hilbert(Signal [ , FFTLength = 0 ])

 

La syntaxe de la fonction Hilbert se compose des éléments suivants :

Section

Description

Signal

L'ensemble de données réel à partir duquel le signal analytique doit être calculé. L'ensemble de données doit être échantillonné de manière équidistante, puisque l'algorithme utilise la transformée de Fourier discrète (pour les données équidistantes).

Les structures de données autorisées sont Séries de données, Matrice de données, Signal, Série de signaux et Série de signaux avec composante X bidimensionnelle. Tous les types de données numériques sont autorisés, à l'exception de Temps calendaire et Période de temps.

Les valeurs invalides ne sont pas autorisées dans cet argument.

Si l'argument est une liste, alors la fonction est exécutée pour chaque élément de la liste et le résultat est également une liste.

FFTLength

La longueur de la transformée de Fourier qui est nécessaire pour calculer la transformée de Hilbert. La longueur du FFT doit être supérieure ou égale à la longueur des données. Si la longueur FFT spécifiée est supérieure à la longueur des données, des zéros sont ajoutés pour la transformée de Fourier interne. Une valeur de -1 fixe la longueur de la FFT pour qu'elle soit égale à la puissance suivante la plus élevée, soit 2. La valeur par défaut de 0 définit la longueur du FFT comme étant égale à la longueur des données.

Les structures de données autorisées sont Scalaire. Tous les types de données entiers sont autorisés.

La valeur doit être supérieure ou égale à -1.

Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété.

Si l'argument n'est pas spécifié, il est défini à la valeur par défaut 0 .

Remarques

Le résultat a la même structure et la même unité que l'argument Signal.

Pour les structures de données composées, seule la composante Y est prise en compte. Si elles sont présentes, les composantes X ou Z sont copiées dans le résultat sans modification. Dans le cas des matrices de données et des séries de signaux, le calcul est effectué sur la base de chaque colonne.

La transformée de Hilbert est définie par une transformation linéaire intégrale pour un signal (réel ou complexe) x(t) comme suit :

Par cette définition, sous la forme équivalente d'une convolution, la transformée de Hilbert peut également s'écrire comme :

En appliquant la transformée de Fourier à la dernière équation, la fonction de transfert H de la transformée de Hilbert est calculée comme suit :

En d'autres termes, la transformée de Hilbert peut être interprétée comme un déphasage de -π/2 (c'est-à-dire -90 degrés) pour les fréquences positives et de π/2 (c'est-à-dire 90 degrés) pour les fréquences négatives. Par exemple, la transformée de Hilbert de la fonction cosinus produit comme résultat la fonction sinus.

Pour référence, voir [1] ainsi que [4].

Application : Amplitude instantanée, phase instantanée, fréquence instantanée, enveloppe ainsi que démodulation des signaux

La transformée de Hilbert est fréquemment utilisée pour calculer les grandeurs instantanées du signal original : l'amplitude instantanée, la phase instantanée et la fréquence instantanée. De plus, l'amplitude instantanée donne l'enveloppe supérieure du signal à analyser.

Grâce à ces grandeurs instantanées, les signaux peuvent également être démodulés (modulation d'amplitude, modulation de phase et modulation de fréquence).

Les calculs, cependant, sont basés sur le signal analytique dérivé de la transformée de Hilbert et non directement sur la transformée de Hilbert.

Des détails, des définitions et des exemples sont disponibles dans l'aide en ligne couvrant la fonction AnalyticSignal ou l' Objet d'analyse Grandeur Instantanée.

Contexte théorique : L'algorithme de calcul de la transformée de Hilbert.

L'algorithme à temps continu susmentionné définit la fonction de transfert H dans la gamme de fréquences. L'algorithme de calcul de la transformée de Hilbert discrète est donc (à l'aide de la FFT et de la fonction de transfert discrète H) complété de manière similaire à l'algorithme de la fonction AnalyticSignal (voir aussi [1]) :

La seule différence réside dans la définition de la fonction de transfert.

La fonction de transfert est maintenant spécifiée pour les longueurs de FFT égales à : H[k] = 2 pour k = 1, 2, ..., FFTLength/2 - 1 (fréquences positives) et H[k] = 0 pour k = FFTLength/2 + 1, ..., FFTLength (fréquences négatives). i dans ce cas est l'unité imaginaire. Les coefficients symétriques k = 0 et k = FFTLength/2 sont spéciaux. Pour ceux-ci, H[k] = 0.

La fonction de transfert est spécifiée de la même manière que pour les longueurs de FFT inégales : H[k] = i pour k = 1, 2, ..., (FFTLength-1)/2 et H[k] = i pour k = (FFTLength-1)/2 + 1, ..., FFTLength ainsi qu'en plus H[0] = 0.

L'algorithme FPScript pour le calcul de la transformée de Hilbert discrète correspond à l'algorithme FPScript de la fonction AnalyticSignal, à l'exception de la définition de la fonction de transfert. Un code similaire se trouve dans l'aide en ligne couvrant la fonction AnalyticSignal.

Influence de la longueur de la FFT : En utilisant un « zero padding », c'est-à-dire en sélectionnant la longueur de la FFT comme étant supérieure à la longueur des données, la résolution de la FFT requise pour l'algorithme est augmentée. Le résultat du calcul peut ainsi être amélioré. L'exemple suivant permet de clarifier ce point.

Remarque        Un signal de valeur réelle x(t) peut maintenant être transformé en un signal complexe z(t) en utilisant la transformée de Hilbert comme suit :

La fonction de transfert de cette transformation correspond à la transformation de la définition de la fonction AnalyticSignal. La transformée de Hilbert peut être définie de manière équivalente comme la partie imaginaire du signal analytique associée au signal x(t).

Disponible dans

Option Analyse spectrale

Exemples

Imag(AnalyticSignal(realSig))

Il en résulte la transformation de Hilbert d'un signal de valeur réelle. Le code est équivalent à Hilbert(realSig).

realSig + 1i * Hilbert(realSig)

Transforme un signal de valeur réelle en un signal analytique dont la partie imaginaire donne lieu à la transformée de Hilbert. Le code est équivalent à AnalyticSignal(realSig).

Dim t = Series(0, 10, 0.005)
Hilbert(Signal(Cos(t), t))

Calcule la transformée de Hilbert de la fonction cosinus. Le résultat est la fonction sinusoïdale.

Dim t = Series(-25, 25, 0.005)
Dim sig = Signal(Sinc(t), t)
Dim hilbTrafo = Hilbert(sig, NumberOfRows(sig))
List("Hilbert Trafo calculated", hilbTrafo, "Hilbert Trafo exact", Signal((1-Cos(t))/t, t))

Calcule la transformée de Hilbert de la fonction Sinc. Le résultat exact est inclus dans la résultante, qui est fournie par la fonction 1/t - Cos(t)/t. La comparaison est affichée dans un graphique 2D :

Si vous augmentez la longueur de la FFT dans cet exemple pour le calcul de la variable hilbTrafo à 131072, par exemple, le résultat dans ce cas est un calcul plus précis pour la transformée de Hilbert. Les deux courbes sont maintenant presque complètement en accord :

Voir aussi

Fonction AnalyticSignal

Fonction FFTn

Fonction Hilbert

Fonction IFFTn

Fonction IRFFTn

Fonction Phase

Fonction PhaseUnwrap

Objet d'analyse Grandeur Instantanée

Option Analyse Spectrale

Littérature

[1] S. Lawrence Marple, Jr.: Computing the Discrete-Time "Analytic" Signal via FFT. Dans: IEEE Transactions on Signal Processing, Vol. 47, No.9. http://ieeexplore.ieee.org/iel5/78/16975/00782222.pdf?arnumber=782222,1999.

[2] B. Boashash: Estimating and Interpreting the Instantaneous Frequency of a Signal-Part I: Fundamentals. Dans: Proceedings of the IEEE, Vol. 80, No. 4, pp. 519–538. 1992.

[3] Bernard Picinbono: On Instantaneous Amplitude and Phase of Signals. Dans: IEEE Trans. Signal Processing, Vol. 45, No. 3. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.178.833,1997.

[4] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck: Discrete-Time Signal Processing, 2nd Ed.. Upper Saddle River, NJ: Prentice Hall,1999.

Partager l’article ou envoyer par mail :

Vous serez probablement intéressé par les articles suivants :