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

Periodograma Lomb-Scargle

Descripción

ejemplo

[pxx,f] = plomb(x,t) devuelve la estimación de densidad espectral de potencia (PSD) de Lomb-Scargle, , de una señal, , que se muestrea en los instantes especificados en . debe aumentar monotoníamente, pero no es necesario que esté nescado uniformemente.pxxxtt Todos los elementos de deben ser no negativos. se evalúa en las frecuencias devueltas en .tpxxf

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

  • Si es una matriz, 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 que faltan 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 una velocidad, pero tiene muestras que faltan.fs Especifique los datos que faltan mediante s.NaN

[pxx,f] = plomb(___,fmax) estima el PSD hasta una frecuencia máxima, utilizando cualquiera de los argumentos de entrada de las sintaxis anteriores.fmax Si la señal se muestrea enNNaN Δt es la diferencia de tiempo entre el primero y el último de ellos, luego se devuelve en ( /pxxroundfmaxfmin) puntos, donde fmin = 1/(4 × N × ts) es la frecuencia más pequeña a la que se calcula y el tiempo medio de la muestra espxx ts = Δt/(N – 1). por defecto afmax 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 entero, .ofac El uso de 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 a ( /ofacpxxroundfmaxfmin) puntos de frecuencia, pero la frecuencia mínima considerada en este caso es 1/( ?ofacN Ts). de forma predeterminada 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.

  • Establézcalo en , o déjelo sin especificar, para obtenerlo como densidad espectral de potencia.spectrumtype'psd'pxx

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

  • Establézcase para obtener el periodograma Lomb-Scargle estándar, que se escala dos veces la varianza de .spectrumtype'normalized'x

ejemplo

[___,pth] = plomb(___,'Pd',pdvec) devuelve el umbral de nivel de potencia, , de modo 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 especifica las frecuencias de salida en .fvec

ejemplo

[pxx,w] = plomb(x) devuelve la estimación PSD de evaluada en un conjunto de frecuencias normalizadas espaciadas uniformemente, 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 lomb-Scargle en la ventana de figura actual.

Ejemplos

contraer todo

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

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. Incruste 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;

Calcular y trazar el periodograma de la señal. Utilícelo con la configuración predeterminada.periodogram

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

Utilícelo con los ajustes predeterminados para estimar y trazar el PSD de la señal.plomb Utilice los límites de eje del trazado anterior.

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

Supongamos que falta la señal el 10% de las muestras originales. Coloque 's 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 que faltan.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')

Muestree la señal original, pero haga que el muestreo no sea uniforme añadiendo fluctuación (incertidumbre) a las mediciones de tiempo. El primer instante sigue siendo en cero. Se utiliza para estimar y trazar el PSD de la señal muestreada de forma 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 permitió, Galileo grabó las ubicaciones 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 que faltan debido a las condiciones turbias se especifican mediante NaN. La primera observación está fechada el 15 de enero. Generar una matriz 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

Calcule 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 Trazar el espectro de potencia y mostrar 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

Determinar el período orbital de Callisto (en días) como la inversa de la frecuencia de máxima energía. 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 todas las noches 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 de la posición angular de Callisto están en minutos de arco. Hay varias lagunas debido a las condiciones nubladas. Generar una matriz 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 Estimar 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 periodo de periodotiene tiene un máximo claro. Nombre la frecuencia máxima

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

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

Utilice mínimos cuadrados lineales para ajustar 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 conexión para construir la función de empalme en un intervalo de 200 puntos. Trazar 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)

Muestre un sinusoides de 0,8 Hz a 1 Hz durante 100 s. Incruste el sinusoides en ruido blanco con una varianza de 1/100. Restablezca 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;

Calcular y trazar la estimación de 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 del sinusoides es mayor que la frecuencia Nyquist.

Repita el cálculo, pero ahora muestree el sinusoides en momentos aleatorios. Incluya frecuencias de hasta 1 Hz. Especifique un factor de sobremuestreo de 2. Trazar el PSD.

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

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

Amplíe las frecuencias alrededor de 0,8 Hz. Utilice una rejilla fina con un espaciado de 0,001 Hz. No 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. Calcular 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>
. Restablezca 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 Demb-Scargle del 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 periodogramas 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 ubicación de 0,25. Superponer una gráfica 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 sinusoides,
<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>
. Calcular el espectro de potencia de la señal y trazar su histograma junto con las funciones de distribución empíricas y teóricas.

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 utilizando

<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

Generar 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>
. Incruste la señal en ruido blanco de varianza 0.902. Restablezca 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. Traza la señal.

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

Calcular y trazar el espectro de potencia normalizado. Anote los niveles que corresponden a probabilidades de falsa alarma del 50%, 10%, 1% y 0.01%. Si genera muchas señales de ruido blanco de 90 muestras con varianza 0.902, entonces la mitad de ellas tienen uno o más picos más altos que la línea del 50%, 10% tienen uno o más picos más altos que 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 como para que sólo alrededor del 0,01% de las señales posibles puedan alcanzarlo.

Se utiliza sin argumentos de salida para repetir el cálculo.plomb La gráfica ahora es 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

Generar 128 muestras de un sinusoides de frecuencia normalizada

<math display="block">
<mrow>
<mi>π</mi>
<mo>/</mo>
<mn>2</mn>
</mrow>
</math>
rad/muestra incrustado en ruido gaussiano blanco de varianza 1/100.

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

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

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

Trazar 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')

Estimar el PSD 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/muestra,
<math display="block">
<mrow>
<mi>π</mi>
<mo>/</mo>
<mn>2</mn>
</mrow>
</math>
rad/muestra, y
<math display="block">
<mrow>
<mn>2</mn>
<mi>π</mi>
<mo>/</mo>
<mn>5</mn>
</mrow>
</math>
rad/muestra. Añadir ruido gaussiano blanco de varianza 1/100. Utilícelo sin argumentos de salida para calcular y trazar la estimación de 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)

Calcula la estimación de PSD de nuevo, pero ahora elimina 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 's para especificar las muestras que faltan en una señal.NaN

Generar 1024 muestras de un sinusoides de frecuencia normalizada

<math display="block">
<mrow>
<mn>2</mn>
<mi>π</mi>
<mo>/</mo>
<mn>5</mn>
</mrow>
</math>
rad/muestra incrustado en ruido blanco de varianza 1/100. Calcule la densidad espectral de potencia utilizando el procedimiento Lomb-Scargle. Utilícelo 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)

Elimine todas las demás muestras asignando 's.NaN Se utiliza para calcular y trazar el PSD.plomb El periodo de periodograma alcanza la misma frecuencia porque el eje de tiempo no cambia.

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

Retire todas las demás muestras reduciéndose. La función calcula ahora 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 de PSD de forma independiente para cada columna y la devuelve en la columna correspondiente de . puede contener s. s se tratan como datos que faltan y se excluyen del cálculo del espectro.xplombpxxxNaNNaN

Tipos de datos: single | double

Instantáneas de tiempo, especificadas como un vector real no negativo, una matriz o una matriz. debe aumentar monotoníamente, pero no es necesario que esté nescado uniformemente. puede contener s o s.datetimedurationttNaNNaT Estos valores se tratan como datos que faltan y se excluyen del cálculo del espectro.

Tipos de datos: single | double | datetime | duration

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

Tipos de datos: single | double

Frecuencia máxima, especificada como escalar positiva. puede ser más alta 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 especifica , devuelve la estimación de 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' Especificar 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

Lomb-Scargle periodograma, 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 se pueda descartar (con probabilidad) que el pico se debe 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

Lomb-Scargle Periodogram

El periodograma Lomb-Scargle le permite encontrar y probar señales periódicas débiles en datos de otra manera aleatorios, de muestra desigual.

Considerar N Observaciones xk, tomada a veces tkDónde k = 1, …, N. El periodograma Lomb-Scargle se define 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 desplazamiento de tiempo, τ, se elige como

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

para garantizar la invariancia de tiempo del espectro calculado. Cualquier turno tk → tk + T en las mediciones de tiempo da como resultado un desplazamiento idéntico en el desplazamiento: τ → τ + T. Además, la elección garantiza que "un máximo en el periodograma se produce en la misma frecuencia que minimiza la suma de cuadrados de los residuos del ajuste de una onda sinusoidal a los datos." El desplazamiento depende únicamente 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) sigue una distribución exponencial de probabilidad con la media de la unidad.[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.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Introducido en R2014b