Transforme un signal réel en un signal analytique dont la partie imaginaire fournit 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
AnalyticSignal(Signal [ , le FFTLength Variable 0 ])
La syntaxe de la fonction AnalyticSignal se compose des éléments suivants :
Section |
Description |
---|---|
Signal |
L'ensemble de données réelles à partir duquel le signal analytique doit être calculé. L'ensemble de données doit être échantillonné de manière équidistante, car l'algorithme utilise la transformée de Fourier discrète (pour les données équidistantes). Les structures de données autorisées sont Série de données, le Matrice de données, le Signal, le 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 de la FFT doit être supérieure ou égale à la longueur des données. Si la longueur FFT indiqué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 définit la longueur de la FFT à la puissance supérieure suivante de 2. La valeur par défaut 0 définit la longueur de la FFT à 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 calculée. Les composantes X ou Z, si elles sont présentes, sont reprises telles quelles dans le résultat. Pour les matrices de données et les séries de signaux, le calcul s'effectue colonne par 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] :
Ici, X(f) et Z(f) désignent les transformations de Fourier à valeurs complexes (à temps continu) correspondantes de x(t) et z(t). La fonction de transfert est donc donnée par :
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 à valeur réelle en un signal analytique dont la partie imaginaire correspond à 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
Objet d'analyse Grandeur Instantanée
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, le 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, le 1997.