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 una velocidad.xfs Si es una matriz, 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 la muestra en el momento los valores 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 del 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 con los valores de frecuencia almacenados en y los valores de tiempo almacenados en .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 tiempos de muestra correspondiente a .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. Traza 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. Trazar el espectrograma de potencia y superponer 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 está en el 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 del 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. Calcular y mostrar 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')

Generar 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)

Repita el cálculo utilizando la transformación sincrosqueezed Fourier. Utilice una ventana Hann de 500 muestras para dividir la señal en segmentos y ventanarlos.

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

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

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

Generar una señal sinusoidal muestreada a 1 kHz durante 0,3 segundos e incrustada en ruido gaussiano blanco de varianza 1/16. Especifique una frecuencia sinusoides de 200 Hz. Estimar y mostrar 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 de nuevo la frecuencia instantánea de la señal, 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, calcula la frecuencia instantánea de forma independiente para cada columna y devuelve el resultado en la columna correspondiente de .xinstfreqifq

Ejemplo: especifica un sinusoides ruidososin(2*pi*(0:127)/16)+randn(1,128)/100

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

Tipos de datos: single | double

Frecuencia de muestreo, especificada como escalar positiva. La frecuencia de muestreo es el número de muestras por unidad de tiempo. Si la unidad de tiempo es 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 muestras consecutivas de .durationx

  • Vector real, matriz o matriz — El instante de tiempo correspondiente a cada elemento de .durationdatetimex

Ejemplo: especifica un lapso de 1 segundo entre 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

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

Si falta un horario o se duplican los puntos de tiempo, puede corregirlo con las sugerencias de .Clean Timetable with Missing, Duplicate, or Nonuniform Times

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 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 un sinusoides de 1 Hz muestreado a 4 Hz durante 128 segundos, así como las frecuencias y 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, especificados 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 un sinusoides de 1 Hz muestreado a 4 Hz durante 128 segundos, así como las frecuencias y 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 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: 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 frecuencia, 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 uno 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, interpola la señal a una cuadrícula uniforme para calcular 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 transformación 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 variable en el tiempo que se relaciona con la media de las frecuencias presentes en la señal a medida que evoluciona, .[1][2]

  • Si se establece en'Method' 'tfmoment', luego 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 distribución de frecuencia de tiempo.pspectrum

    2. Estima la frecuencia instantánea utilizando

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

  • Si se establece en'Method' 'hilbert', luego 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 utilizando la función.hilbert

    2. Estima la frecuencia instantánea utilizando

      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