AnalyticSignal (FPScript)

21.09.2021

Transforme un signal réel en un signal analytique dont la partie imaginaire résulte de la transformation de Hilbert. Fréquemment utilisé pour calculer l'amplitude instantanée ou la fréquence instantanée ainsi que pour la démodulation des signaux.

Syntaxe

AnalyticSignal(Signal [ , FFTLength = 0 ])

 

La syntaxe de la fonction AnalyticSignal 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 réels sont autorisés, sauf 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 le signal analytique. 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 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 fonction calcule à partir d'un signal d'entrée réel x(t) un signal analytique (c'est-à-dire complexe, différentiable) z(t) au moyen de l'algorithme mathématique suivant dans le domaine des fréquences ; voir [1] :

Dans ce cas, X(f) et Z(f) décrivent les transformées de Fourier complexes (en temps continu) associées de x(t) et z(t). La fonction de transfert est donc spécifiée comme suit :

En d'autres termes : z(t) donne x(t), où la moitié positive du spectre est doublée et la moitié négative du spectre est supprimée.

Remarque        La partie réelle du signal analytique z(t) ainsi définie correspond au signal d'entrée original x(t) ; la partie imaginaire du signal analytique donne la transformée de Hilbert de x(t) ; voir [1].

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 avec sa partie imaginaire résultant de la transformée de Hilbert. Le code renvoie le même résultat que AnalyticSignal(realSig).

Absolute(AnalyticSignal(realSig))

Donne l'amplitude instantanée ou l'enveloppe supérieure d'un signal (si le signal n'a pas de tendance).

Dim offset = Trend(realSig, TREND_LINEAR)
Absolute(AnalyticSignal(realSig - offset))

Calcule l'amplitude instantanée d'un signal. Dans ce cas, la correction de tendance est effectuée à l'aide de la fonction Trend.

Dim offset = Trend(realSig, TREND_LINEAR)
Absolute(AnalyticSignal(realSig - offset)) + offset

Calcule l'enveloppe supérieure d'un signal. Dans ce cas, la correction de tendance est effectuée à l'aide de la fonction Trend.

Dim offset = Mean(realSig, MEAN_ARITHMETIC + CALC_MOVING, 200)
-Absolute(AnalyticSignal(realSig - offset)) + offset

Calcule l'enveloppe inférieure d'un signal. Dans ce cas, la correction de tendance est effectuée à l'aide de la fonction Mean.

PhaseUnwrap(Phase(AnalyticSignal(realSig)))

Donne la phase instantanée d'un signal à composante unique (si le signal n'a pas de tendance).

Dim offset = Trend(realSig, TREND_ADAPTIVE)
PhaseUnwrap(Phase(AnalyticSignal(realSig - offset)))

Calcule la phase instantanée d'un signal à composante unique. Dans ce cas, la correction de tendance est effectuée à l'aide de la fonction Trend.

Dim instPhase = PhaseUnwrap(Phase(AnalyticSignal(realSig)))
Derivative(instPhase)/(2*PI)

Donne la fréquence instantanée d'un signal à composante unique (si le signal n'a pas de tendance).

Dim offset = Mean(realSig, MEAN_ARITHMETIC + CALC_MOVING, 50)
Dim instPhase = PhaseUnwrap(Phase(AnalyticSignal(realSig - offset)))
Derivative(instPhase)/(2*PI)

Calcule la fréquence instantanée d'un signal à composante unique. Dans ce cas, la correction de tendance est effectuée à l'aide de la fonction Mean.

Voir aussi

Fonction Hilbert

Fonction FFTn

Fonction IFFTn

Fonction IRFFTn

Fonction Absolute

Fonction Phase

Fonction Derivative

Fonction Trend

Fonction Mean

Fonction PhaseUnwrap

Objet d'analyse Grandeur Instantanée

Option Analyse spectrale

Calcul du signal analytique

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.

Partager l’article ou envoyer par mail :

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