Saltar navegación

Documentación de FlexPro 2025

AnalyticSignal

Transforma una señal real en una señal analítica cuya parte imaginaria la proporciona la transformada de Hilbert. Suele utilizarse para calcular la amplitud instantánea o la frecuencia instantánea y para la demodulación de señales.

Sintaxis

AnalyticSignal(Signal [ , FFTLength = 0 ])

 

La sintaxis de la función AnalyticSignal consta de los siguientes elementos:

Parte

Descripción

Signal

El conjunto de datos reales a partir de los cuales debe calcularse la señal analítica. El conjunto de datos debe estar muestreado de forma equidistante, ya que el algoritmo utiliza la transformada discreta de Fourier (para datos equidistantes).

Las estructuras de datos permitidas son Serie de datos, Matriz de datos, Señal, Serie de señales y Serie de señales con componente X bidimensional. Se permiten todos los tipos de datos reales excepto Tiempo de calendario y Intervalo de tiempo.

No se permiten valores inválidos en este argumento.

Si el argumento es una lista, la función se ejecuta para cada elemento de la lista y el resultado también es una lista.

FFTLength

La longitud de la transformada de Fourier necesaria para calcular la señal analítica. La longitud de la FFT debe ser mayor o igual que la longitud de los datos. Si la longitud de la FFT especificada es mayor que la longitud de los datos, se añaden ceros para la transformada de Fourier interna. Un valor de -1 establece la longitud de la FFT a la siguiente potencia de 2 mayor. El valor predeterminado 0 ajusta la longitud de la FFT a la longitud de los datos.

Las estructuras de datos permitidas son Valor escalar. Se permiten todos los tipos de datos enteros.

El valor debe ser mayor o igual que -1.

Si el argumento es una lista, se toma su primer elemento. Si se trata de nuevo de una lista, se repite el proceso.

Se establece el valor predeterminado 0 si no se especifica el argumento.

Notas

El resultado tiene la misma unidad que el argumento Signal.

En el caso de las estructuras de datos compuestas, solo se calcula el componente Y. Los componentes X y Z, si existen, se transfieren sin cambios al resultado. Para matrices de datos y series de señales, el cálculo se realiza columna por columna.

La función calcula una señal analítica (es decir, diferenciable compleja) z(t) a partir de una señal de entrada real x(t) utilizando la siguiente regla matemática en el dominio de la frecuencia, véase [1]:

Aquí, X(f) y Z(f) denotan las correspondientes transformadas de Fourier de valor complejo (tiempo continuo) de x(t) y z(t). La función de transferencia es la siguiente:

En otras palabras: z(t) resulta de x(t) duplicando la mitad positiva del espectro y eliminando la mitad negativa.

Nota        La parte real de la señal analítica z(t) así definida corresponde a la señal de entrada original x(t), la parte imaginaria de la señal analítica devuelve la transformada de Hilbert de x(t), véase [1].

Disponibilidad

Opción Análisis espectral

Ejemplos

Imag(AnalyticSignal(realSig))

Devuelve la transformada de Hilbert de una señal de valor real. El código es equivalente a Hilbert(realSig).

realSig + 1i*Hilbert(realSig)

Transforma una señal de valor real en una señal analítica cuya parte imaginaria corresponde a la transformada de Hilbert. El código proporciona el mismo resultado que AnalyticSignal(realSig).

Absolute(AnalyticSignal(realSig))

Devuelve la amplitud instantánea o la envolvente superior de una señal (si la señal no tiene tendencia).

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

Calcula la amplitud instantánea de una señal. La corrección de tendencias se realiza aquí, por ejemplo, mediante la función Trend.

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

Calcula la envolvente superior de una señal. La corrección de tendencias se realiza aquí, por ejemplo, mediante la función Trend.

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

Calcula la envolvente inferior de una señal. La corrección de tendencias se realiza aquí, por ejemplo, mediante la función Mean.

PhaseUnwrap(Phase(AnalyticSignal(realSig)))

Devuelve la fase instantánea de una señal monocomponente. (si la señal no tiene tendencia).

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

Calcula la fase instantánea de una señal monocomponente. La corrección de tendencias se realiza aquí, por ejemplo, mediante la función Trend.

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

Devuelve la frecuencia instantánea de una señal monocomponente (si la señal no tiene tendencia).

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

Calcula la frecuencia instantánea de una señal monocomponente. La corrección de tendencias se realiza aquí, por ejemplo, mediante la función Mean.

Véase también

Función Hilbert

Función FFTn

Función IFFTn

Función IRFFTn

Función Absolute

Función Phase

Función Derivative

Función Trend

Función Mean

Función PhaseUnwrap

Objeto de análisis Magnitud instantánea

Opción Análisis espectral

Cálculo de la señal analítica

Bibliografía

[1] S. Lawrence Marple, Jr.: Computing the Discrete-Time "Analytic" Signal via FFT. En: 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. En: Proceedings of the IEEE, Vol. 80, No. 4, pp. 519–538. 1992.

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