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.

plomb

El periodograma de Lomb-Scargle

Descripción

ejemplo

[pxx,f] = plomb(x,t) Devuelve la estimación de la densidad espectral de potencia (PSD) de Lomb-Scargle, de una señal, que se muestrea en los instantes especificados en. debe aumentar monótona pero no necesita espaciarse uniformemente.pxxxtt Todos los elementos deben ser no negativos. se evalúa en las frecuencias devueltas.tpxxf

  • Si es un vector, se trata como un solo canal.x

  • Si es una matriz, a continuación, calcula el PSD de forma independiente para cada columna y lo devuelve en la columna correspondiente de.xplombpxx

o puede contener s o s.xtNaNNaT Estos valores se tratan como datos faltantes y se excluyen del cálculo del espectro.

ejemplo

[pxx,f] = plomb(x,fs) trata el caso en el que la señal se muestrea uniformemente, a un ritmo, pero tiene muestras faltantes.fs Especifique los datos que faltan utilizando s.NaN

[pxx,f] = plomb(___,fmax) estima el PSD hasta una frecuencia máxima, utilizando cualquiera de los argumentos de entrada de sintaxis anteriores.fmax Si la señal se muestrea a los no-instantes, yNNaN Δt es la diferencia horaria entre la primera y la última de ellas, luego se devuelve al (/pxxroundfmaxfmin) puntos, donde fmin = 1/(4 × N × ts) es la frecuencia más pequeña en la que se calcula y el tiempo de muestra promedio espxx ts = Δt/(N – 1). por defectofmax 1/(2 × ts), que para las señales muestreadas uniformemente corresponde a la frecuencia Nyquist.

ejemplo

[pxx,f] = plomb(___,fmax,ofac) especifica un factor de sobremuestreo de enteros,.ofac El uso de para interpolar o suavizar un espectro se asemeja a la técnica de relleno cero para los métodos basados en FFT. se devuelve de nuevo al (/ofacpxxroundfmaxfmin) puntos de frecuencia, pero la frecuencia mínima considerada en este caso es 1/(× ×ofacN Ts). por defecto es 4.ofac

ejemplo

[pxx,fvec] = plomb(___,fvec) estima el PSD de las frecuencias especificadas en. debe tener al menos dos elementos.xfvecfvec El segundo argumento de salida es el mismo que el de entrada.fvec

No puede especificar una frecuencia máxima o un factor de sobremuestreo si utiliza esta sintaxis.

ejemplo

[___] = plomb(___,spectrumtype) Especifica la normalización del periodograma.

  • Se establece en, o dejarlo sin especificar, para obtener como una densidad espectral de potencia.spectrumtype'psd'pxx

  • Se establece en para obtener el espectro de potencia de la señal de entrada.spectrumtype'power'

  • Se establece en para obtener el periodograma estándar de Lomb-Scargle, que se escala por dos veces la varianza de.spectrumtype'normalized'x

ejemplo

[___,pth] = plomb(___,'Pd',pdvec) Devuelve el umbral de nivel de potencia, de forma que un pico con un valor mayor que tiene una probabilidad de ser un pico de señal real y no el resultado de fluctuaciones aleatorias. puede ser un vector.pthpthpdvecpdvec Cada elemento de debe ser mayor que 0 y menor que 1.pdvec Cada fila de corresponde a un elemento de. tiene el mismo número de canales que.pthpdvecpthx Esta opción no está disponible si se especifican las frecuencias de salida.fvec

ejemplo

[pxx,w] = plomb(x) Devuelve la estimación de PSD de evaluada en un conjunto de frecuencias normalizadas uniformemente espaciadas, que abarcan el intervalo Nyquist.xw Utilice s para especificar las muestras que faltan.NaN Todas las opciones anteriores están disponibles para frecuencias normalizadas. Para acceder a ellos, especifique una matriz vacía como la segunda entrada.

ejemplo

plomb(___) sin argumentos de salida traza la estimación de PSD de periodograma de Lomb-Scargle en la ventana de la figura actual.

Ejemplos

contraer todo

El método Lomb-Scargle puede manejar señales que han sido muestreadas de manera desigual o que faltan muestras.

Genere una señal sinusoidal de dos canales muestreada a 1 kHz durante aproximadamente 0,5 s. Las frecuencias sinusoides son 175 Hz y 400 Hz. Inserte la señal en ruido blanco con varianza

<math display="block">
<mrow>
<msup>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>=</mo>
<mn>1</mn>
<mo>/</mo>
<mn>4</mn>
</mrow>
</math>
.

Fs = 1000; f0 = 175; f1 = 400;  t = 0:1/Fs:0.5;  wgn = randn(length(t),2)/2;  sigOrig = sin(2*pi*[f0;f1]*t)' + wgn;

Computa y traza el periodograma de la señal. Se usa con la configuración predeterminada.periodogram

periodogram(sigOrig,[],[],Fs)  axisLim = axis; title('Periodogram')

Se utiliza con la configuración predeterminada para estimar y trazar el PSD de la señal.plomb Utilice los límites de eje de la gráfica anterior.

plomb(sigOrig,t)  axis(axisLim) title('Lomb-Scargle')

Supongamos que la señal falta el 10% de las muestras originales. El lugar está en ubicaciones aleatorias para simular los puntos de datos que faltan.NaN Se utiliza para estimar y trazar el PSD de la señal con muestras faltantes.plomb

sinMiss = sigOrig;  misfrac = 0.1; nTime = length(t)*2;  sinMiss(randperm(nTime,round(nTime*misfrac))) = NaN;  plomb(sinMiss,t)  axis(axisLim) title('Missing Samples')

Muestrear la señal original, pero haga el muestreo no uniforme añadiendo jitter (incertidumbre) a las mediciones de tiempo. El primer instante sigue siendo cero. Se utiliza para estimar y trazar el PSD de la señal muestreada de manera no uniforme.plomb

tirr = t + (1/2-rand(size(t)))/Fs/2; tirr(1) = 0;  sinIrreg = sin(2*pi*[f0;f1]*tirr)' + wgn;  plomb(sinIrreg,tirr)  axis(axisLim) title('Nonuniform Sampling')

Galileo Galilei observó el movimiento de los cuatro satélites más grandes de Júpiter durante el invierno de 1610. Cuando el tiempo lo permitía, Galileo registró las localizaciones de los satélites. Usa sus observaciones para estimar el período orbital de uno de los satélites, Callisto.

La posición angular de Callisto se mide en minutos de arco. Los datos faltantes debido a condiciones nublados se especifican utilizando NaNs. La primera observación está fechada el 15 de enero. Genere una serie de tiempos de observación.datetime

yg = [10.5 NaN 11.5 10.5 NaN NaN NaN -5.5 -10.0 -12.0 -11.5 -12.0 -7.5 ...     NaN NaN NaN NaN 8.5 12.5 12.5 10.5 NaN NaN NaN -6.0 -11.5 -12.5 ...     -12.5 -10.5 -6.5 NaN 2.0 8.5 10.5 NaN 13.5 NaN 10.5 NaN NaN NaN ...     -8.5 -10.5 -10.5 -10.0 -8.0]';  obsv = datetime(1610,1,14+(1:length(yg)));  plot(yg,'o')  ax = gca; nights = [1 18 32 46]; ax.XTick = nights; ax.XTickLabel = char(obsv(nights)); grid

Estimar el espectro de potencia de los datos utilizando.plomb Especifique un factor de sobremuestreo de 10. Exprese las frecuencias resultantes en días inversos.

[pxx,f] = plomb(yg,obsv,[],10,'power'); f = f*86400;

Se utiliza para determinar la ubicación del único pico prominente del espectro.findpeaks Trace el espectro de potencia y muestre el pico.

[pk,f0] = findpeaks(pxx,f,'MinPeakHeight',10);  plot(f,pxx,f0,pk,'o') xlabel('Frequency (day^{-1})') title('Power Spectrum and Prominent Peak') grid

Determine el período orbital de Callisto (en días) como el inverso de la frecuencia de la energía máxima. El resultado difiere en menos del 1% del valor publicado por la NASA.

Period = 1/f0
Period = 16.6454 
NASA = 16.6890184; PercentDiscrep = (Period-NASA)/NASA*100
PercentDiscrep = -0.2613 

Galileo Galilei descubrió los cuatro satélites más grandes de Júpiter en enero de 1610 y registró sus ubicaciones cada noche clara hasta marzo de ese año. Utilice los datos de Galileo para encontrar el período orbital de Callisto, el más externo de los cuatro satélites.

Las observaciones de Galileo sobre la posición angular de Callisto están en minutos de arco. Hay varios huecos debido a las condiciones nublados. Genere una serie de tiempos de observación.duration

t = [0 2 3 7 8 9 10 11 12 17 18 19 20 24 25 26 27 28 29 31 32 33 35 37 ...     41 42 43 44 45]'; td = days(t);  yg = [10.5 11.5 10.5 -5.5 -10.0 -12.0 -11.5 -12.0 -7.5 8.5 12.5 12.5 ...     10.5 -6.0 -11.5 -12.5 -12.5 -10.5 -6.5 2.0 8.5 10.5 13.5 10.5 -8.5 ...     -10.5 -10.5 -10.0 -8.0]';  plot(td,yg,'o')

Se utiliza para calcular el periodograma de los datos.plomb Calcule el espectro de potencia hasta una frecuencia de

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>5</mn>
<mspace width="0.2777777777777778em"></mspace>
<msup>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>d</mi>
<mi>a</mi>
<mi>y</mi>
</mrow>
</mstyle>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
</math>
. Especifique un factor de sobremuestreo de 10. Elija la normalización estándar de Lomb-Scargle.

oneday = seconds(days(1));  [pxx,f] = plomb(yg,td,0.5/oneday,10,'normalized');  f = f*oneday;

El periodograma tiene un máximo claro. Nombra la frecuencia pico

<math display="block">
<mrow>
<msub>
<mrow>
<mi>f</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
</mrow>
</math>
. Trace el periodograma y anote el pico.

[pmax,lmax] = max(pxx); f0 = f(lmax);  plot(f,pxx,f0,pmax,'o') xlabel('Frequency (day^{-1})')

Utilice los mínimos cuadrados lineales para ajustarse a los datos una función del formulario

<math display="block">
<mrow>
<mi>y</mi>
<mo stretchy="false">(</mo>
<mi>t</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>A</mi>
<mo>+</mo>
<mi>B</mi>
<mi mathvariant="normal">cos</mi>
<mn>2</mn>
<mi>π</mi>
<msub>
<mrow>
<mi>f</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mi>t</mi>
<mo>+</mo>
<mi>C</mi>
<mi mathvariant="normal">sin</mi>
<mn>2</mn>
<mi>π</mi>
<msub>
<mrow>
<mi>f</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mi>t</mi>
<mo>.</mo>
</mrow>
</math>

Los parámetros de ajuste son las amplitudes, y.ABC

ft = 2*pi*f0*t;  ABC = [ones(size(ft)) cos(ft) sin(ft)] \ yg
ABC = 3×1

    0.4243
   10.4444
    6.6137

Utilice los parámetros de empalme para construir la función de empalme en un intervalo de 200 puntos. Graficar los datos y superponer el ajuste.

x = linspace(t(1),t(end),200)'; fx = 2*pi*f0*x;  y = [ones(size(fx)) cos(fx) sin(fx)] * ABC;  plot(td,yg,'o',days(x),y)

Muestrear una sinusoide de 0,8 Hz a 1 Hz para 100 s. Inserte la sinusoide en ruido blanco con una varianza de 1/100. Restablece el generador de números aleatorios para obtener resultados repetibles.

f0 = 0.8;  rng default wgn = randn(1,100)/10;  ts = 1:100; s = sin(2*pi*f0*ts) + wgn;

Calcule y trace la estimación de la densidad espectral de potencia hasta la frecuencia de muestreo. Especifique un factor de sobremuestreo de 10.

plomb(s,ts,1,10)

Hay alias porque la frecuencia de la sinusoide es mayor que la frecuencia Nyquist.

Repite el cálculo, pero ahora muestra la sinusoide en momentos aleatorios. Incluye frecuencias de hasta 1 Hz. Especifique un factor de sobremuestreo de 2. Trace el PSD.

tn = sort(100*rand(1,100)); n = sin(2*pi*f0*tn) + wgn;  ofac = 2;  plomb(n,tn,1,ofac)

El aliasing desaparece. El muestreo irregular aumenta la frecuencia de muestreo efectiva al reducir algunos intervalos de tiempo.

Acercar las frecuencias alrededor de 0,8 Hz. Utilice una rejilla fina con un espaciado de 0,001 Hz. No se puede especificar un factor de sobremuestreo o una frecuencia máxima en este caso.

df = 0.001; fvec = 0.7:df:0.9;  hold on plomb(n,tn,fvec) legend('ofac = 2','df = 0.001')

Generar

<math display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<mn>1</mn>
<mn>0</mn>
<mn>2</mn>
<mn>4</mn>
</mrow>
</math>
muestras de ruido blanco con varianza
<math display="block">
<mrow>
<mi>σ</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
</math>
, dada una frecuencia de muestreo de 1 Hz. Calcule el espectro de potencia del ruido blanco. Elija la normalización de Lomb-Scargle y especifique un factor de sobremuestreo
<math display="block">
<mrow>
<mrow>
<mstyle mathvariant="monospace">
<mrow>
<mi>o</mi>
<mi>f</mi>
<mi>a</mi>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
<mo>=</mo>
<mn>1</mn>
<mn>5</mn>
</mrow>
</math>
. Restablece el generador de números aleatorios para obtener resultados repetibles.

rng default  N = 1024; t = (1:N)'; wgn = randn(N,1);  ofac = 15; [pwgn,f] = plomb(wgn,t,[],ofac,'normalized');

Verifique que la estimación del espectro de potencia de Lomb-Scargle de ruido blanco tenga una distribución exponencial con la media de la unidad. Trazar un histograma de los valores y un histograma de un conjunto de números aleatorios distribuidos exponencialmente generados mediante la función de distribuciónpwgn

<math display="block">
<mrow>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mi>z</mi>
<mo>|</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>=</mo>
<msup>
<mrow>
<mi>e</mi>
</mrow>
<mrow>
<mo>-</mo>
<mi>z</mi>
</mrow>
</msup>
</mrow>
</math>
. Para normalizar los histogramas, recuerde que el número total de muestras de periodograma es
<math display="block">
<mrow>
<mi>N</mi>
<mo>×</mo>
<mrow>
<mstyle mathvariant="monospace">
<mrow>
<mi>o</mi>
<mi>f</mi>
<mi>a</mi>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
<mo>/</mo>
<mn>2</mn>
</mrow>
</math>
. Especifique un ancho de bin de 0,25. Superponer un gráfico de la función de distribución teórica.

dx = 0.25; br = 0:dx:5;  Nf = N*ofac/2;  hpwgn = histcounts(pwgn,br)';  hRand = histcounts(-log(rand(Nf,1)),br)';  bend = br(1:end-1);  bar(bend,[hpwgn hRand]/Nf/dx,'histc') hold on plot(br,exp(-br)) legend('wgn','Empirical pdf','Theoretical pdf') hold off

Incrustar en el ruido una señal sinusoidal de frecuencia 0,1 Hz. Utilice una relación señal-ruido de

<math display="block">
<mrow>
<mi>ξ</mi>
<mo>=</mo>
<mn>0</mn>
<mo>.</mo>
<mn>0</mn>
<mn>1</mn>
</mrow>
</math>
. Especifique la amplitud sinusoide,
<math display="block">
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
</mrow>
</math>
, utilizando la relación
<math display="block">
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mo>=</mo>
<mi>σ</mi>
<msqrt>
<mrow>
<mn>2</mn>
<mi>ξ</mi>
</mrow>
</msqrt>
</mrow>
</math>
. Computa el espectro de potencia de la señal y traza su histograma junto a las funciones de distribución empírica y teórica.

SNR = 0.01; x0 = sqrt(2*SNR); sigsmall = wgn + x0*sin(2*pi/10*t);  [psigsmall,f] = plomb(sigsmall,t,[],ofac,'normalized');  hpsigsmall = histcounts(psigsmall,br)';  bar(bend,[hpsigsmall hRand]/Nf/dx,'histc') hold on plot(br,exp(-br)) legend('sigsmall','Empirical pdf','Theoretical pdf') hold off

Repita el cálculo con

<math display="block">
<mrow>
<mi>ξ</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
</math>
. La distribución ahora difiere notablemente.

SNR = 1; x0 = sqrt(2*SNR); siglarge = wgn + x0*sin(2*pi/10*t);  [psiglarge,f] = plomb(siglarge,t,[],ofac,'normalized');  hpsiglarge = histcounts(psiglarge,br)';  bar(bend,[hpsiglarge hRand]/Nf/dx,'histc') hold on plot(br,exp(-br)) legend('siglarge','Empirical pdf','Theoretical pdf') hold off

Genere 100 muestras de una señal sinusoidal a una frecuencia de muestreo de 1 Hz. Especifique una amplitud de 0,75 y una frecuencia de

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>6</mn>
<mo>/</mo>
<mn>2</mn>
<mi>π</mi>
<mo></mo>
<mn>0</mn>
<mo>.</mo>
<mn>0</mn>
<mn>9</mn>
<mn>6</mn>
<mspace width="0.2777777777777778em"></mspace>
<mstyle mathvariant="normal">
<mrow>
<mi>H</mi>
<mi>z</mi>
</mrow>
</mstyle>
</mrow>
</math>
. Inserte la señal en ruido blanco de la varianza 0,902. Restablece el generador de números aleatorios para obtener resultados repetibles.

rng default  X0 = 0.75; f0 = 0.6; vr = 0.902;  Nsamp = 100; t = 1:Nsamp; X = X0*cos(f0*(1:Nsamp))+randn(1,Nsamp)*sqrt(vr);

Deseche el 10% de las muestras al azar. Trace la señal.

X(randperm(Nsamp,Nsamp/10)) = NaN;  plot(t,X,'o')

Calcule y trace el espectro de potencia normalizado. Anote los niveles que corresponden a las probabilidades de falsas alarmas de 50%, 10%, 1% y 0,01%. Si genera muchas señales de ruido blanco de 90 muestras con la varianza 0,902, entonces la mitad de ellas tienen uno o más picos superiores a la línea del 50%, el 10% tiene uno o más picos superiores a la línea del 10%, y así sucesivamente.

Pfa = [50 10 1 0.01]/100; Pd = 1-Pfa;  [pxx,f,pth] = plomb(X,1:Nsamp,'normalized','Pd',Pd);  plot(f,pxx,f,pth*ones(size(f'))) xlabel('f') text(0.3*[1 1 1 1],pth-.5,[repmat('P_{fa} = ',[4 1]) num2str(Pfa')])

En este caso, el pico es lo suficientemente alto que sólo alrededor del 0,01% de las posibles señales pueden alcanzarlo.

Utilítelo sin argumentos de salida para repetir el cálculo.plomb La trama es ahora logarítmica, y los niveles se dibujan en términos de probabilidades de detección.

plomb(X,1:Nsamp,'normalized','Pd',Pd)

Cuando se le da un vector de datos como la única entrada, estima la densidad espectral de potencia utilizando frecuencias normalizadas.plomb

Genere 128 muestras de una sinusoide de frecuencia normalizada

<math display="block">
<mrow>
<mi>π</mi>
<mo>/</mo>
<mn>2</mn>
</mrow>
</math>
RAD/Sample incrustado en blanco Gaussiano ruido de la varianza 1/100.

t = (0:127)'; x = sin(2*pi*t/4); x = x + randn(size(x))/10;

Calcule el PSD utilizando el procedimiento Lomb-Scargle. Repita el cálculo con.periodogram

[p,f] = plomb(x); [pper,fper] = periodogram(x);

Trace las estimaciones de PSD en decibelios. Compruebe que los resultados son equivalentes.

plot(f/pi,pow2db(p)) hold on plot(fper/pi,pow2db(pper))  axis([0 1 -40 20]) xlabel('\omega / \pi') ylabel('PSD') legend('plomb','periodogram')

Calcule el PSD de Lomb-Scargle de una señal de tres canales compuesta de sinusoides. Especifique las frecuencias como

<math display="block">
<mrow>
<mn>2</mn>
<mi>π</mi>
<mo>/</mo>
<mn>3</mn>
</mrow>
</math>
RAD/Sample,
<math display="block">
<mrow>
<mi>π</mi>
<mo>/</mo>
<mn>2</mn>
</mrow>
</math>
RAD/Sample, y
<math display="block">
<mrow>
<mn>2</mn>
<mi>π</mi>
<mo>/</mo>
<mn>5</mn>
</mrow>
</math>
RAD/sample. Añadir ruido Gaussiano blanco de la varianza 1/100. Se utiliza sin argumentos de salida para calcular y trazar la estimación PSD en decibelios.plomb

x3 = [sin(2*pi*t/3) sin(2*pi*t/4) sin(2*pi*t/5)]; x3 = x3 + randn(size(x3))/10;  figure plomb(x3)

Calcule la estimación de PSD de nuevo, pero ahora quite el 25% de los datos al azar.

x3(randperm(numel(x3),0.25*numel(x3))) = NaN;  plomb(x3)

Si no tiene un vector de tiempo, utilice para especificar muestras faltantes en una señal.NaN

Genere 1024 muestras de una sinusoide de frecuencia normalizada

<math display="block">
<mrow>
<mn>2</mn>
<mi>π</mi>
<mo>/</mo>
<mn>5</mn>
</mrow>
</math>
RAD/Sample incrustado en ruido blanco de la varianza 1/100. Calcule la densidad espectral de potencia utilizando el procedimiento Lomb-Scargle. Se utiliza sin argumentos de salida para trazar la estimación.plomb

t = (0:1023)'; x = sin(2*pi*t/5); x = x + randn(size(x))/10;  [pxx,f] = plomb(x);  plomb(x)

Quite todas las demás muestras asignándolas.NaN Se utiliza para calcular y trazar el PSD.plomb El periodograma alcanza la misma frecuencia porque el eje de tiempo no ha cambiado.

xnew = x; xnew(2:2:end) = NaN;  plomb(xnew)

Quite todas las demás muestras mediante la reducción de resolución. La función ahora estima la periodicidad al doble de la frecuencia original. Este no es probablemente el resultado que desea.

xdec = x(1:2:end);  plomb(xdec)

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector o matriz. Si es un vector, se trata como un solo canal.x Si es una matriz, calcula la estimación PSD de forma independiente para cada columna y la devuelve en la columna correspondiente de. puede contener s. s se tratan como datos faltantes y se excluyen del cómputo del espectro.xplombpxxxNaNNaN

Tipos de datos: single | double

Instantes de tiempo, especificados como un vector real no negativo, una matriz o una matriz. debe aumentar monótona pero no necesita espaciarse uniformemente. puede contener s o s.datetimedurationttNaNNaT Estos valores se tratan como datos faltantes y se excluyen del cálculo del espectro.

Tipos de datos: single | double | datetime | duration

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, la frecuencia de muestreo tiene unidades de Hertz.

Tipos de datos: single | double

Frecuencia máxima, especificada como un escalar positivo. puede ser mayor que la frecuencia Nyquist.fmax

Tipos de datos: single | double

Factor de sobremuestreo, especificado como un escalar entero positivo.

Tipos de datos: single | double

Frecuencias de entrada, especificadas como vector. debe tener al menos dos elementos.fvec

Tipos de datos: single | double

Escalado del espectro de potencia, especificado como uno de, o.'psd''power''normalized' Si se omite o se especifica, se devuelve la estimación de la densidad espectral de potencia.spectrumtype'psd' Especificar escala cada estimación del PSD por el ancho de banda de ruido equivalente de la ventana.'power' Especifique para obtener una estimación de la potencia en cada frecuencia.'power' Especificación de escalas por dos veces la varianza de.'normalized'pxxx

Probabilidades de detección, especificadas como el par separado por comas que consta de un escalar o un vector de valores reales entre 0 y 1, exclusivo.'Pd' La probabilidad de detección es la probabilidad de que un pico en el espectro no se deba a fluctuaciones aleatorias.

Tipos de datos: single | double

Argumentos de salida

contraer todo

Periodograma de Lomb-Scargle, devuelto como vector o matriz. Cuando la señal de entrada,, es un vector, entonces es un vector.xpxx Cuando es una matriz, la función trata cada columna como un canal independiente y calcula el periodograma de cada canal.xx

Frecuencias, devueltas como vector.

Tipos de datos: single | double

Frecuencias normalizadas, devueltas como vector.

Tipos de datos: single | double

Umbrales de nivel de potencia, devueltos como vector o matriz. El umbral de nivel de potencia es la amplitud que un pico en el espectro debe exceder para que pueda descartarse (con probabilidad) que el pico se deba a fluctuaciones aleatorias.pdvec Cada fila de corresponde a un elemento de. tiene el mismo número de canales que.pthpdvecpthx

Tipos de datos: single | double

Más acerca de

contraer todo

El periodograma de Lomb-Scargle

El periodograma Lomb-Scargle le permite encontrar y probar señales periódicas débiles en datos muestreados de forma aleatoria y sin uniformidad.

Considerar N Observaciones xk, tomada a veces tkDónde k = 1, …, N. El periodograma Lomb-Scargle está definido por[1]

PLS(f)=12σ2{[k=1N(xkx¯)cos(2πf(tkτ))]2k=1Ncos2(2πf(tkτ))+[k=1N(xkx¯)sin(2πf(tkτ))]2k=1Nsin2(2πf(tkτ))},

Dónde

x¯=1Nk=1Nxk

Y

σ2=1N1k=1N(xkx¯)2

son respectivamente la media y la varianza de los datos.

El desfase de tiempo, τ, se elige como

tan(2(2πf)τ)=k=1Nsin(2(2πf)tk)k=1Ncos(2(2πf)tk)

para garantizar la invarianza del tiempo del espectro calculado. Cualquier cambio tk → tk + T en las mediciones de tiempo da como resultado un desplazamiento idéntico en el desfase: τ → τ + T. Por otra parte, la elección asegura que "un máximo en el periodograma se produce en la misma frecuencia que minimiza la suma de los cuadrados de los residuos del ajuste de una onda sinusoidal a los datos." El desfase sólo depende de los tiempos de medición y desaparece cuando los tiempos están igualmente espaciados.[2]

Si la señal de entrada consiste en ruido Gaussiano blanco, PLS(f) follows an exponential probability distribution con la media unitaria.[3]

Referencias

[1] Lomb, Nicholas R. “Least-Squares Frequency Analysis of Unequally Spaced Data.” Astrophysics and Space Science. Vol. 39, 1976, pp. 447–462.

[2] Scargle, Jeffrey D. “Studies in Astronomical Time Series Analysis. II. Statistical Aspects of Spectral Analysis of Unevenly Spaced Data.” Astrophysical Journal. Vol. 263, 1982, pp. 835–853.

[3] Press, William H., and George B. Rybicki. “Fast Algorithm for Spectral Analysis of Unevenly Sampled Data.” Astrophysical Journal. Vol. 338, 1989, pp. 277–280.

[4] Horne, James H., and Sallie L. Baliunas. “A Prescription for Period Analysis of Unevenly Sampled Time Series.” Astrophysical Journal. Vol. 302, 1986, pp. 757–763.

Introducido en R2014b