Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

hht

Transformación Hilbert-Huang

Descripción

ejemplo

hs = hht(imf) devuelve el espectro Hilbert de la señal especificada por las funciones de modo intrínseco. es útil para analizar señales que comprenden una mezcla de señales cuyo contenido espectral cambia en el tiempo.hsimfhs Se utiliza para realizar análisis espectrales de Hilbert en señales para identificar entidades localizadas.hht

ejemplo

hs = hht(imf,fs) devuelve el espectro Hilbert de una señal muestreada a una velocidad.hsfs

ejemplo

[hs,f,t] = hht(___) devuelve el vector de frecuencia y el vector de tiempo además de .fths Estos argumentos de salida se pueden utilizar con cualquiera de las sintaxis de entrada anteriores.

ejemplo

[hs,f,t,imfinsf,imfinse] = hht(___) también devuelve las frecuencias instantáneas y las energías instantáneas de las funciones de modo intrínseco para el diagnóstico de señales.imfinsfimfinse

ejemplo

[___] = hht(___,Name,Value) estima los parámetros del espectro Hilbert con opciones adicionales especificadas por uno o más argumentos de pares.Name,Value

ejemplo

hht(___) sin argumentos de salida traza el espectro Hilbert en la ventana de figura actual. Puede utilizar esta sintaxis con cualquiera de los argumentos de entrada en sintaxis anteriores.

hht(___,freqlocation) traza el espectro Hilbert con el argumento opcional para especificar la ubicación del eje de frecuencia.freqlocation La frecuencia se representa en el eje de forma predeterminada.y

Ejemplos

contraer todo

Generar un chirrido cuadrático modulado gaussiano. Especifique una frecuencia de muestreo de 2 kHz y una duración de la señal de 2 segundos.

fs = 2000; t = 0:1/fs:2-1/fs; q = chirp(t-2,4,1/2,6,'quadratic',100,'convex').*exp(-4*(t-1).^2); plot(t,q)

Se utiliza para visualizar las funciones de modo intrínseco (IMF) y el residual.emd La función de forma predeterminada genera una tabla que indica el número de iteraciones de tamización, la tolerancia relativa y el criterio de detención de tamcones para cada IMF.

emd(q)
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit         1      |        2     |    0.0063952   |  SiftMaxRelativeTolerance       2      |        2     |       0.1007   |  SiftMaxRelativeTolerance       3      |        2     |      0.01189   |  SiftMaxRelativeTolerance       4      |        2     |    0.0075124   |  SiftMaxRelativeTolerance The decomposition stopped because the number of extrema of the residual signal is less than 'MaxNumExtrema'. 

Calcular los MIF de la señal. Establézalo para ocultar la tabla.'Display'0

imf = emd(q,'Display',0);

Utilice los IIF calculados para trazar el espectro Hilbert de la príaqueda cuadrática. Restringir el rango de frecuencia a [0, 20] Hz.

hht(imf,fs,'FrequencyLimits',[0 20])

Cargar y visualizar una señal continua no estacionaria compuesta de ondas sinusoidales con un cambio distinto en la frecuencia. La vibración de un martillo y el sonido de los fuegos artificiales son ejemplos de señales continuas no estacionarias. La señal se muestrea a una velocidad .fs

load('sinusoidalSignalExampleData.mat','X','fs') t = (0:length(X)-1)/fs; plot(t,X) xlabel('Time(s)')

La señal mixta contiene ondas sinusoidales con diferentes valores de amplitud y frecuencia.

Para crear la gráfica de espectro Hilbert, necesita las funciones de modo intrínseco (ImF) de la señal. Realice la descomposición del modo empírico para calcular los MIF y los residuos de la señal. Dado que la señal no es suave, especifique ' ' como método de interpolación.pchip

[imf,residual,info] = emd(X,'Interpolation','pchip');
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit         1      |        2     |     0.026352   |  SiftMaxRelativeTolerance       2      |        2     |    0.0039573   |  SiftMaxRelativeTolerance       3      |        1     |     0.024838   |  SiftMaxRelativeTolerance       4      |        2     |      0.05929   |  SiftMaxRelativeTolerance       5      |        2     |      0.11317   |  SiftMaxRelativeTolerance       6      |        2     |      0.12599   |  SiftMaxRelativeTolerance       7      |        2     |      0.13802   |  SiftMaxRelativeTolerance       8      |        3     |      0.15937   |  SiftMaxRelativeTolerance       9      |        2     |      0.15923   |  SiftMaxRelativeTolerance The decomposition stopped because the number of extrema of the residual signal is less than 'MaxNumExtrema'. 

La tabla generada en la ventana de comandos indica el número de iteraciones de tammos, la tolerancia relativa y el criterio de detención de tampeo para cada IMF generada. Esta información también está contenida en .info Puede ocultar la tabla agregando el par de valores de nombre.'Display',0

Cree la gráfica de espectro Hilbert utilizando los componentes obtenidos mediante la descomposición del modo empírico.imf

hht(imf,fs)

La gráfica de frecuencia frente a tiempo es una gráfica dispersa con una barra de color vertical que indica la energía instantánea en cada punto del FMI. La gráfica representa el espectro de frecuencia instantáneo de cada componente descompuesto a partir de la señal mixta original. Tres IMF aparecen en la gráfica con un cambio distinto en la frecuencia a 1 segundo.

Cargue un archivo que contenga datos de audio de una ballena azul del Pacífico, muestreado a 4 kHz. El archivo es de la biblioteca de vocalizaciones de animales mantenida por el Programa de Investigación de Bioacústica de la Universidad de Cornell. La escala de tiempo en los datos se comprime por un factor de 10 para elevar el tono y hacer las llamadas más audibles. Convierta la señal en un horario MATLAB® y compílela. Cuatro características se destacan del ruido de la señal. El primero se conoce como un , y los otros tres se conocen como .TrillGemidos

whaleFile = fullfile(matlabroot,'examples','matlab','bluewhale.au'); [w,fs] = audioread(whaleFile); whale = timetable(w,'SampleRate',fs); stackedplot(whale);

Se utiliza para visualizar las tres primeras funciones de modo intrínseco (IMF) y el residual.emd La función de forma predeterminada genera una tabla que indica el número de iteraciones de tamización, la tolerancia relativa y el criterio de detención de tamcones para cada IMF.

emd(whale,'MaxNumIMF',3)
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit         1      |        1     |      0.13523   |  SiftMaxRelativeTolerance       2      |        2     |     0.030198   |  SiftMaxRelativeTolerance       3      |        2     |      0.01908   |  SiftMaxRelativeTolerance The decomposition stopped because 'MaxNumIMF' was reached. 

Calcular los tres primeros IMFs de la señal. Establézalo para ocultar la tabla.'Display'0

imf = emd(whale,'MaxNumIMF',3,'Display',0);

Utilice los MIF calculados para trazar el espectro Hilbert de la señal. Restringir el rango de frecuencia a [0, 1400] Hz.

hht(imf,'FrequencyLimits',[0 1400])

Calcular el espectro Hilbert para el mismo rango de frecuencias. Visualice los espectros Hilbert del trino y gemidos como una gráfica de malla.

[hs,f,t] = hht(imf,'FrequencyLimits',[0 1400]); mesh(seconds(t),f,hs,'EdgeColor','none','FaceColor','interp') xlabel('Time') ylabel('Frequency') zlabel('Instantaneous Energy')

Cargar y visualizar una señal continua no estacionaria compuesta de ondas sinusoidales con un cambio distinto en la frecuencia. La vibración de un martillo y el sonido de los fuegos artificiales son ejemplos de señales continuas no estacionarias. La señal se muestrea a una velocidad .fs

load('sinusoidalSignalExampleData.mat','X','fs') t = (0:length(X)-1)/fs; plot(t,X) xlabel('Time(s)')

La señal mixta contiene ondas sinusoidales con diferentes valores de amplitud y frecuencia.

Para calcular los parámetros del espectro Hilbert, necesita los IMF de la señal. Realice la descomposición del modo empírico para calcular las funciones de modo intrínseco y los residuos de la señal. Dado que la señal no es suave, especifique como método de interpolación.'pchip'

[imf,residual,info] = emd(X,'Interpolation','pchip');
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit         1      |        2     |     0.026352   |  SiftMaxRelativeTolerance       2      |        2     |    0.0039573   |  SiftMaxRelativeTolerance       3      |        1     |     0.024838   |  SiftMaxRelativeTolerance       4      |        2     |      0.05929   |  SiftMaxRelativeTolerance       5      |        2     |      0.11317   |  SiftMaxRelativeTolerance       6      |        2     |      0.12599   |  SiftMaxRelativeTolerance       7      |        2     |      0.13802   |  SiftMaxRelativeTolerance       8      |        3     |      0.15937   |  SiftMaxRelativeTolerance       9      |        2     |      0.15923   |  SiftMaxRelativeTolerance The decomposition stopped because the number of extrema of the residual signal is less than 'MaxNumExtrema'. 

La tabla generada en la ventana de comandos indica el número de iteraciones de tammos, la tolerancia relativa y el criterio de detención de tampeo para cada IMF generada. Esta información también está contenida en .info Puede ocultar la tabla especificando como .'Display'0

Calcular los parámetros del espectro Hilbert: Espectro Hilbert, vector de frecuencia, vector de tiempo, frecuencia instantánea y energía instantánea.hsftimfinsfimfinse

[hs,f,t,imfinsf,imfinse] = hht(imf,fs);

Utilice los parámetros de espectro Hilbert calculados para el análisis de frecuencia de tiempo y el diagnóstico de señales.

Simular una señal de vibración de un rodamiento dañado. Calcular el espectro Hilbert de esta señal y buscar defectos.

Un rodamiento con un diámetro de paso de 12 cm tiene ocho elementos rodantes. Cada elemento rodante tiene un diámetro de 2 cm. La carrera exterior permanece estacionaria ya que la carrera interna se conduce a 25 ciclos por segundo. Un acelerómetro toma muestras de las vibraciones del rodamiento a 10 kHz.

fs = 10000; f0 = 25; n = 8; d = 0.02; p = 0.12;

La señal de vibración del rodamiento sano incluye varias órdenes de la frecuencia de conducción.

t = 0:1/fs:10-1/fs; yHealthy = [1 0.5 0.2 0.1 0.05]*sin(2*pi*f0*[1 2 3 4 5]'.*t)/5;

Una resonancia se excita en la vibración del rodamiento a mitad del proceso de medición.

yHealthy = (1+1./(1+linspace(-10,10,length(yHealthy)).^4)).*yHealthy;

La resonancia introduce un defecto en la carrera exterior del rodamiento que resulta en un desgaste progresivo. El defecto causa una serie de impactos que se repiten en la carrera exterior de frecuencia de paso de bolas (BPFO) del rodamiento:

<math display="block">
<mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>B</mi>
<mi>P</mi>
<mi>F</mi>
<mi>O</mi>
</mrow>
</mstyle>
</mrow>
<mo>=</mo>
<mrow>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</mfrac>
</mrow>
<mi>n</mi>
<msub>
<mrow>
<mi>f</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mrow>
<mo>[</mo>
<mn>1</mn>
<mo>-</mo>
<mrow>
<mfrac>
<mrow>
<mi>d</mi>
</mrow>
<mrow>
<mi>p</mi>
</mrow>
</mfrac>
</mrow>
<mi mathvariant="normal">cos</mi>
<mi>θ</mi>
<mo>]</mo>
</mrow>
<mo>,</mo>
</mrow>
</math>

Dónde

<math display="block">
<mrow>
<msub>
<mrow>
<mi>f</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
</mrow>
</math>
es la tasa de conducción,
<math display="block">
<mrow>
<mi>n</mi>
</mrow>
</math>
es el número de elementos rodantes,
<math display="block">
<mrow>
<mi>d</mi>
</mrow>
</math>
es el diámetro de los elementos rodantes,
<math display="block">
<mrow>
<mi>p</mi>
</mrow>
</math>
es el diámetro de paso del rodamiento, y
<math display="block">
<mrow>
<mi>θ</mi>
</mrow>
</math>
es el ángulo de contacto del rodamiento. Asuma un ángulo de contacto de 15o y calcule el BPFO.

ca = 15; bpfo = n*f0/2*(1-d/p*cosd(ca));

Utilice la función para modelar los impactos como un tren periódico de sinusoides de 5 milisegundos.pulstran Cada sinusoides de 3 kHz se muestra por una ventana superior plana. Utilice una ley de potencia para introducir un desgaste progresivo en la señal de vibración del rodamiento.

fImpact = 3000; tImpact = 0:1/fs:5e-3-1/fs; wImpact = flattopwin(length(tImpact))'/10; xImpact = sin(2*pi*fImpact*tImpact).*wImpact;  tx = 0:1/bpfo:t(end); tx = [tx; 1.3.^tx-2];  nWear = 49000; nSamples = 100000; yImpact = pulstran(t,tx',xImpact,fs)/5; yImpact = [zeros(1,nWear) yImpact(1,(nWear+1):nSamples)];

Genere la señal de vibración BPFO añadiendo los impactos a la señal de rodamiento sano. Trazar la señal y seleccionar un intervalo de 0,3 segundos a partir de 5,0 segundos.

yBPFO = yImpact + yHealthy;  xLimLeft = 5.0; xLimRight = 5.3; yMin = -0.6; yMax = 0.6;  plot(t,yBPFO)  hold on [limLeft,limRight] = meshgrid([xLimLeft xLimRight],[yMin yMax]); plot(limLeft,limRight,'--') hold off

Amplíe el intervalo seleccionado para visualizar el efecto de los impactos.

xlim([xLimLeft xLimRight])

Agregue ruido gaussiano blanco a las señales. Especifique una varianza de ruido de

<math display="block">
<mrow>
<mn>1</mn>
<mo>/</mo>
<mn>1</mn>
<mn>5</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
.

rn = 150; yGood = yHealthy + randn(size(yHealthy))/rn; yBad = yBPFO + randn(size(yHealthy))/rn;  plot(t,yGood,t,yBad) xlim([xLimLeft xLimRight]) legend('Healthy','Damaged')

Se utiliza para realizar una descomposición en modo empírico de la señal de rodamiento sano.emd Calcular las primeras cinco funciones de modo intrínseco (ImF). La función de forma predeterminada genera una tabla que indica el número de iteraciones de tamización, la tolerancia relativa y el criterio de detención de tamcones para cada IMF.

imfGood = emd(yGood,'MaxNumIMF',5);
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit         1      |        3     |     0.017132   |  SiftMaxRelativeTolerance       2      |        3     |      0.12694   |  SiftMaxRelativeTolerance       3      |        6     |      0.14582   |  SiftMaxRelativeTolerance       4      |        1     |     0.011082   |  SiftMaxRelativeTolerance       5      |        2     |      0.03463   |  SiftMaxRelativeTolerance The decomposition stopped because 'MaxNumIMF' was reached. 

Utilícelo sin argumentos de salida para visualizar los tres primeros modos y el residual.emd Establézalo para ocultar la tabla.'Display'0

emd(yGood,'MaxNumIMF',5,'Display',0)

Calcular y visualizar los MIF de la señal de rodamiento defectuosa. El primer modo empírico revela los impactos de alta frecuencia. Este modo de alta frecuencia aumenta en energía a medida que avanza el desgaste.

imfBad = emd(yBad,'MaxNumIMF',5);
Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit         1      |        2     |     0.041274   |  SiftMaxRelativeTolerance       2      |        3     |      0.16695   |  SiftMaxRelativeTolerance       3      |        3     |      0.18428   |  SiftMaxRelativeTolerance       4      |        1     |     0.037177   |  SiftMaxRelativeTolerance       5      |        2     |     0.095861   |  SiftMaxRelativeTolerance The decomposition stopped because 'MaxNumIMF' was reached. 
emd(yBad,'MaxNumIMF',5,'Display',0)

Trazar el espectro Hilbert del primer modo empírico de la señal de rodamiento defectuosa. El primer modo captura el efecto de los impactos de alta frecuencia. La energía de los impactos aumenta a medida que avanza el desgaste del rodamiento.

figure hht(imfBad(:,1),fs)

El espectro Hilbert del tercer modo muestra la resonancia en la señal de vibración. Restringir el rango de frecuencia a [0, 100] Hz.

hht(imfBad(:,3),fs,'FrequencyLimits',[0 100])

Para comparar, trazar los espectros Hilbert del primer y tercer modos de la señal de rodamiento sano.

subplot(2,1,1) hht(imfGood(:,1),fs) subplot(2,1,2) hht(imfGood(:,3),fs,'FrequencyLimits',[0 100])

Argumentos de entrada

contraer todo

Función de modo intrínseco, especificada como matriz o calendario. es cualquier señal cuyo sobre es simétrico con respecto a cero y cuyo número de cruces extremos y cero difieren en su mayoría uno. se utiliza para descomponer y simplificar señales complicadas en un número finito de funciones de modo intrínseco necesarias para realizar análisis espectrales de Hilbert.imfemd

trata cada columna como una función de modo intrínseco.hhtimf Para obtener más información sobre la informática , consulte .imfemd

Frecuencia de muestreo, especificada como escalar positiva. Si no se suministra, se utiliza una frecuencia normalizada de para calcular el espectro Hilbert.fs Si se especifica como un calendario, la frecuencia de muestreo se deduce de ella.imf

Ubicación del eje de frecuencia en el trazado, especificado como o .'yaxis''xaxis' Para visualizar los datos de frecuencia en el eje o el eje del trazado, especifique como o respectivamente.yxfreqlocation'yaxis''xaxis'

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: 'FrequencyResolution',1

Límites de frecuencia para calcular el espectro Hilbert, especificados como el par separado por comas que consta de ' ' y un vector con valores enteros 1 por 2. se especifica en Hz.FrequencyLimitsFrequencyLimits

Resolución de frecuencia para discretizar los límites de frecuencia, especificados como el par separado por comas que consta de ' ' y un escalar positivo.FrequencyResolution

Especifique en Hz.FrequencyResolution Si no se especifica, un valor de'FrequencyResolution' (fhigh-flow)/100 se deduce de .FrequencyLimits Aquí fhigh es el límite superior de yFrequencyLimits flow es el límite inferior.

Valor de umbral mínimo del espectro Hilbert, especificado como el par separado por comas que consta de ' ' y un escalar.MinThreshold

establece elementos de 0 cuando los elementos correspondientes deMinThresholdhs 10log10(hs) son menos de .MinThreshold

Argumentos de salida

contraer todo

Espectro Hilbert de la señal, devuelto como una matriz dispersa. Se utiliza para el análisis de frecuencia de tiempo y para identificar las entidades localizadas en la señal.hs

Valores de frecuencia de la señal, devueltos como vector. utiliza el vector de frecuencia y el vector de tiempo para crear la gráfica de espectro Hilbert.hhtft

Matemáticamente, se denota como:f f = flow : fres : fhighDónde fres es la resolución de frecuencia.

Valores de tiempo de la señal, devueltos como vector o matriz. utiliza el vector de tiempo y el vector de frecuencia para crear la gráfica de espectro Hilbert.durationhhttf

se devuelve como:t

  • Una matriz, si se especifica como una matriz.imf

  • Una matriz, si se especifica como un calendario muestreado uniformemente.durationimf

Frecuencia instantánea de cada FMI, devuelta como vector, matriz o calendario.

tiene el mismo número de columnas que y se devuelve como:imfinsfimf

  • Un vector, si se especifica como un vector.imf

  • Una matriz, si se especifica como una matriz.imf

  • Un calendario, si se especifica como un calendario de muestra uniforme.imf

La energía instantánea de cada FMI, devuelta como vector, matriz o calendario.

tiene el mismo número de columnas que y se devuelve como:imfinseimf

  • Un vector, si se especifica como un vector.imf

  • Una matriz, si se especifica como una matriz.imf

  • Un calendario, si se especifica como un calendario de muestra uniforme.imf

Algoritmos

La transformación Hilbert-Huang es útil para realizar análisis de frecuencia de tiempo de datos no estacionarios y no lineales. El procedimiento Hilbert-Huang consta de los siguientes pasos:

  1. descompone el conjunto de datosemd x en un número finito de funciones de modo intrínseco.

  2. Para cada función de modo intrínseco, xi, la función :hht

    1. Utiliza para calcular la señal analítica,hilbert zi(t)=xi(t)+jH{xi(t)}Dónde H{xi} es la transformación Hilbert de xi.

    2. Expresa zi Como zi(t)=ai(t)ejθi(t)Dónde ai(t) es la amplitud instantánea y θi(t) es la fase instantánea.

    3. Calcula la energía instantánea, |ai(t)|2, y la frecuencia instantánea, ωi(t)dθi(t)/dt. Si se le da una frecuencia de muestreo, conviertehht ωi(t) a una frecuencia en Hz.

    4. Produce la energía instantánea y la frecuencia instantánea en .imfinseimfinsf

  3. Cuando se llama sin argumentos de salida, traza la energía de la señal en función del tiempo y la frecuencia, con un color proporcional a la amplitud.hht

Referencias

[1] Huang, Norden E., and Samuel S. P. Shen. Hilbert-Huang Transform and Its Applications. Singapore: World Scientific, 2014.

[2] Huang, Norden E., Zhaohua Wu, Steven R. Long, Kenneth C. Arnold, Xianyao Chen, and Karin Blank. "On Instantaneous Frequency." Advances in Adaptive Data Analysis. Vol. 1, Number 2, 2009, pp. 177–229.

Introducido en R2018a