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.

instfreq

Estimar la frecuencia instantánea

Descripción

ejemplo

ifq = instfreq(x,fs) estima la frecuencia instantánea de una señal, muestreada a un ritmo.xfs Si es una matriz, entonces la función estima la frecuencia instantánea de forma independiente para cada columna y devuelve el resultado en la columna correspondiente de.xifq

ifq = instfreq(x,t) estima la frecuencia instantánea de muestreo en los valores de tiempo almacenados en.xt

ejemplo

ifq = instfreq(xt) estima la frecuencia instantánea de una señal almacenada en el calendario.MATLAB®xt La función trata todas las variables en el calendario y todas las columnas dentro de cada variable de forma independiente.

ejemplo

ifq = instfreq(tfd,fd,td) estima la frecuencia instantánea de la señal cuya distribución de frecuencia de tiempo, se muestrea en los valores de frecuencia almacenados y en los valores de tiempo almacenados.tfdfdtd

ejemplo

ifq = instfreq(___,Name,Value) especifica opciones adicionales para cualquiera de las sintaxis anteriores mediante argumentos de par nombre-valor. Puede especificar el algoritmo utilizado para estimar la frecuencia instantánea o los límites de frecuencia utilizados en el cálculo.

ejemplo

[ifq,t] = instfreq(___) también devuelve un vector de los tiempos de muestreo correspondientes.tifq

ejemplo

instfreq(___) sin argumentos de salida traza la frecuencia instantánea estimada.

Ejemplos

contraer todo

Genere una señal muestreada a 5 kHz durante 4 segundos. La señal consiste en un conjunto de pulsos de duración decreciente separados por regiones de amplitud oscilante y frecuencia fluctuante con una tendencia creciente. Trace la señal.

fs = 5000; t = 0:1/fs:4-1/fs;  s = besselj(0,1000*(sin(2*pi*t.^2/8).^4));  plot(t,s)

Estimar la frecuencia dependiente del tiempo de la señal como el primer momento del espectrograma de potencia. Trace el espectrograma de potencia y superponga la frecuencia instantánea.

instfreq(s,fs)

Cree una señal de dos canales, muestreada a 1 kHz durante 2 segundos, que consta de dos osciladores controlados por voltaje. En un canal, la frecuencia instantánea varía con el tiempo como una onda de diente de sierra cuyo máximo es de 75% del período. En el otro canal, la frecuencia instantánea varía con el tiempo como una onda cuadrada con un ciclo de trabajo de 30%. Trazar los espectrogramas de los dos canales. Especifique una resolución de tiempo de 0,1 segundos para el canal de diente de sierra y una resolución de frecuencia de 10 Hz para el canal cuadrado.

fs = 1000; t = (0:1/fs:2)'; x = vco(sawtooth(2*pi*t,0.75),[0.1 0.4]*fs,fs); y = vco(square(2*pi*t,30),[0.1 0.3]*fs,fs);  subplot(1,2,1) pspectrum(x,fs,'spectrogram','TimeResolution',0.1) subplot(1,2,2) pspectrum(y,fs,'spectrogram','FrequencyResolution',10)

Almacene la señal en un horario. Calcule y visualice la frecuencia instantánea.

xt = timetable(seconds(t),x,y);  clf instfreq(xt)

Repita el cálculo utilizando la señal analítica.

instfreq(xt,'Method','hilbert')

Genera un chirp cuadrático modulado por un gaussiano. Especifique una frecuencia de muestreo de 2 kHz y una duración de la señal de 4 segundos.

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

Utilice la función con la configuración predeterminada para estimar el espectro de potencia de la señal.pspectrum Utilice la estimación para calcular la frecuencia instantánea.

[p,f,t] = pspectrum(q,fs,'spectrogram');  instfreq(p,f,t)

Repite el cálculo usando la transformada de Fourier synchrosqueezed. Utilice una ventana Hann de 500 muestras para dividir la señal en segmentos y ventana.

[s,sf,st] = fsst(q,fs,hann(500));  instfreq(abs(s).^2,sf,st)

Compare las frecuencias instantáneas encontradas usando los dos métodos diferentes.

[psf,pst] = instfreq(p,f,t); [fsf,fst] = instfreq(abs(s).^2,sf,st);  plot(fst,fsf,pst,psf)

Genere una señal sinusoidal muestreada a 1 kHz para 0,3 segundos e incrustada en el ruido Gaussiano blanco de la varianza 1/16. Especifique una frecuencia sinusoide de 200 Hz. Estimar y visualizar la frecuencia instantánea de la señal.

fs = 1000; t = (0:1/fs:0.3-1/fs)';  x = sin(2*pi*200*t) + randn(size(t))/4;  instfreq(x,t)

Calcule la frecuencia instantánea de la señal de nuevo, pero ahora utilice una distribución de frecuencia de tiempo con una resolución de frecuencia gruesa de 25 Hz como entrada.

[p,fd,td] = pspectrum(x,t,'spectrogram','FrequencyResolution',25);  instfreq(p,fd,td)

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector o matriz. Si es un vector, lo trata como un solo canal.xinstfreq Si es una matriz, a continuación, calcula la frecuencia instantánea de forma independiente para cada columna y devuelve el resultado en la columna correspondiente de.xinstfreqifq

Ejemplo: especifica una sinusoide ruidosasin(2*pi*(0:127)/16)+randn(1,128)/100

Ejemplo: especifica una sinusoide de dos canales.[2 1].*sin(2*pi*(0:127)'./[16 64])

Tipos de datos: single | double

Frecuencia de muestreo, especificada como un escalar positivo. La frecuencia de muestreo es el número de muestras por unidad de tiempo. Si la unidad de tiempo es de segundos, entonces la frecuencia de muestreo está en Hz.

Tipos de datos: single | double

Tiempos de muestreo, especificados como un vector real, un escalar, una matriz o una matriz.durationdurationdatetime

  • escalar: el intervalo de tiempo entre las muestras consecutivas de.durationx

  • Vector real, array o array: el instante de tiempo correspondiente a cada elemento de.durationdatetimex

Ejemplo: especifica un lapso de 1 segundo entre las mediciones consecutivas de una señal.seconds(1)

Ejemplo: Especifica que una señal se muestrea a 1 Hz durante 8 segundos.seconds(0:8)

Tipos de datos: single | double | duration | datetime

Calendario de entrada. debe contener tiempos de fila crecientes y finitos.xt

Si un horario ha desaparecido o ha duplicado los puntos de tiempo, puede arreglarlo usando las sugerencias en.Limpie el horario con los tiempos perdidos, duplicados o no uniformes (MATLAB)

Ejemplo: especifica un proceso aleatorio muestreado a 1 Hz durante 4 segundos.timetable(seconds(0:4)',randn(5,1))

Ejemplo: contiene un proceso aleatorio de tres canales y un proceso aleatorio de cuatro canales, ambos muestreados a 1 Hz durante 4 segundos.timetable(seconds(0:4)',randn(5,3),randn(5,4))

Tipos de datos: single | double

Distribución de frecuencia de tiempo, especificada como una matriz muestreada en las frecuencias almacenadas en y los valores de tiempo almacenados en.fdtd Este argumento de entrada solo se admite cuando se establece en.'Method''tfmoment'

Ejemplo: Especifica la distribución de frecuencia de tiempo de una sinusoide de 1 Hz muestreada a 4 Hz durante 128 segundos, y también las frecuencias y las horas en las que se calcula.[p,f,t] = pspectrum(sin(2*pi*(0:511)/4),4,'spectrogram')

Tipos de datos: single | double

Valores de frecuencia y tiempo para la distribución de frecuencia de tiempo, especificadas como vectores. Estos argumentos de entrada solo se admiten cuando se establece en.'Method''tfmoment'

Ejemplo: Especifica la distribución de frecuencia de tiempo de una sinusoide de 1 Hz muestreada a 4 Hz durante 128 segundos, y también las frecuencias y las horas en las que se calcula.[p,f,t] = pspectrum(sin(2*pi*(0:511)/4),4,'spectrogram')

Tipos de datos: single | double

Argumentos de par nombre-valor

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

Ejemplo: calcula la frecuencia instantánea en el rango de 25 Hz a 50 Hz diferenciando la señal analítica de la entrada.'Method','hilbert','FrequencyLimits',[25 50]

Rango de frecuencias, especificado como el par separado por comas que consta de un vector de dos elementos en hercios.'FrequencyLimits' Este argumento solo se admite cuando se establece en.'Method''tfmoment'

Tipos de datos: single | double

Método de cálculo, especificado como el par separado por comas que consta de y cualquiera o.'Method''tfmoment''hilbert'

  • — Calcular la frecuencia instantánea como el primer momento espectral condicional de la distribución de frecuencia de tiempo de.'tfmoment'x Si se muestrea de forma no uniforme, interpolar la señal a una cuadrícula uniforme para calcular las frecuencias instantáneas.xinstfreq

  • — Calcular la frecuencia instantánea como la derivada de la fase de la señal analítica de encontrado utilizando la transformada de Hilbert.'hilbert'x Este método solo acepta señales muestreadas uniformemente y no admite la entrada de distribución de frecuencia de tiempo.

Argumentos de salida

contraer todo

Frecuencia instantánea, devuelta como vector, matriz o calendario con las mismas dimensiones que la entrada.

Tiempos de estimaciones de frecuencia, devueltos como un vector real, una matriz o una matriz.durationdatetime

Más acerca de

contraer todo

Frecuencia instantánea

La frecuencia instantánea de una señal no estacionaria es un parámetro que varía en el tiempo y que se relaciona con el promedio de las frecuencias presentes en la señal a medida que evoluciona.[1][2]

  • Si se establece en'Method' 'tfmoment', a continuación, estima la frecuencia instantánea como el primer momento espectral condicional de la distribución de frecuencia de tiempo de la señal de entrada.instfreq La función:

    1. Calcula el espectro de potencia del espectrograma P(t,f), de la entrada utilizando la función y utiliza el espectro como una distribución de frecuencia de tiempo.pspectrum

    2. Estima la frecuencia instantánea mediante

      finst(t)=0fP(t,f)df0P(t,f)df.

  • Si se establece en'Method' 'hilbert', a continuación, estima la frecuencia instantánea como la derivada de la fase de la señal analítica de la entrada.instfreq La función:

    1. Calcula la señal analítica, xA, de la entrada mediante la función.hilbert

    2. Estima la frecuencia instantánea mediante

      finst(t)=12πdϕdt,

      donde está la fase de la señal analítica de la entrada.ϕ

Referencias

[1] Boashash, Boualem. "Estimating and Interpreting The Instantaneous Frequency of a Signal—Part 1: Fundamentals." Proceedings of the IEEE®. Vol. 80, April 1992, pp. 520–538.

[2] Boashash, Boualem. "Estimating and Interpreting The Instantaneous Frequency of a Signal—Part 2: Algorithms and Applications." Proceedings of the IEEE. Vol. 80, April 1992, pp. 540–568.

Introducido en R2018a