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.

Análisis espectral de señales muestreadas no uniformemente

Este ejemplo muestra cómo realizar análisis espectrales en señales muestreadas de forma no uniforme. Le ayuda a determinar si una señal se muestrea uniformemente o no, y si no, muestra cómo calcular su espectro o su densidad espectral de potencia.

El ejemplo presenta el periodograma Lomb-Scargle, que puede calcular espectros de señales muestreadas de forma no uniforme.

Señales muestreadas de forma no uniforme

Las señales muestreadas de manera no uniforme se encuentran a menudo en la industria automotriz, en las comunicaciones y en campos tan diversos como la medicina y la astronomía. El muestreo no uniforme puede deberse a sensores imperfectos, relojes no coincidentes o fenómenos desencadenados por eventos.

El cálculo y estudio del contenido espectral es una parte importante del análisis de la señal. Las técnicas convencionales de análisis espectral como el periodograma y el método Welch requieren que la señal de entrada se muestree uniformemente. Cuando el muestreo no es uniforme, se puede volver a muestrear o interpolar la señal en una cuadrícula de muestra uniforme. Esto, sin embargo, puede agregar artefactos no deseados al espectro y podría dar lugar a errores de análisis.

Una mejor alternativa es utilizar el método Lomb-Scargle, que funciona directamente con las muestras no uniformes y por lo tanto hace innecesario remuestrear o interpolar. El algoritmo se ha implementado en la función.plomb

Análisis espectral de señales con datos faltantes

Considere un sistema de monitoreo de temperatura en el que un microcontrolador registra la temperatura de una habitación y transmite esta lectura cada 15 minutos a un servidor basado en la nube que la almacena. Se sabe que los fallos en la conectividad a Internet impiden que el sistema basado en la nube reciba algunas de las lecturas enviadas por el microcontrolador. Además, al menos una vez durante el período de medición, la batería del microcontrolador se agotó, lo que llevó a un gran espacio en el muestreo.

Cargue las lecturas de temperatura y las marcas de tiempo correspondientes.

load('nonuniformdata.mat','roomtemp','t1')  figure plot(t1/(60*60*24*7),roomtemp,'LineWidth',1.2)  grid xlabel('Time (weeks)') ylabel('Temperature (\circF)')

Una manera fácil de determinar si una señal se muestrea uniformemente es tomar un histograma de los intervalos entre los tiempos de muestra sucesivos.

Trazar un histograma de intervalos de muestreo (diferencias de tiempo) en minutos. Incluya solo los puntos en los que haya muestras presentes.

tAtPoints = t1(~isnan(roomtemp))/60; TimeIntervalDiff = diff(tAtPoints);  figure hist(TimeIntervalDiff,0:100) grid xlabel('Sampling intervals (minutes)') ylabel('Occurrences') xlim([10 100])

La mayoría de las mediciones están separadas aproximadamente 15 minutos, como se esperaba. Sin embargo, un buen número de ocurrencias tienen intervalos de muestreo de alrededor de 30 y 45 minutos, que corresponden a una o dos muestras caídas consecutivas. Esto hace que la señal sea muestreada de manera no uniforme. Además, el histograma muestra cierta fluctuación que rodea las barras que muestran altas ocurrencias. Esto podría estar relacionado con la latencia TCP/IP.

Utilice el método Lomb-Scargle para calcular y visualizar el contenido espectral de la señal. Para ayudar a visualizar mejor el espectro, considere las frecuencias de hasta 0,02 mHz, que corresponden a unos 13 ciclos por semana.

[Plomb,flomb] = plomb(roomtemp,t1,2e-5,'power');  figure plot(flomb*60*60*24*7,Plomb) grid xlabel('Frequency (cycles/week)') ylabel('Power (dBW)')

El espectro muestra periodicidades dominantes en 7 ciclos por semana y 1 ciclo por semana. Esto es comprensible, dado que los datos provienen de un edificio con temperatura controlada en un calendario de siete días. La línea espectral que muestra un pico de 1 ciclo por semana indica que la temperatura en el edificio sigue un ciclo semanal, con temperaturas más bajas los fines de semana y temperaturas más altas durante la semana. La línea espectral de 7 ciclos por semana indica que también hay un ciclo diario con temperaturas más bajas por la noche y temperaturas más altas durante el día.

Análisis espectral de señales con muestras espaciadas de manera desigual

Las señales de variabilidad de la frecuencia cardíaca (HRV), que representan la variación fisiológica en el tiempo entre latidos del corazón, se muestrean típicamente de manera desigual porque las frecuencias cardíacas humanas no son constantes. Las señales de HrV se derivan de las lecturas de electrocardiograma (ECG).

Los puntos de muestra de una señal HRV se encuentran en las horas R-Peak del ECG. La amplitud de cada punto se calcula como la inversa de la diferencia de tiempo entre R-Peaks consecutivos y se coloca en el instante del segundo R-Peak.

% Load the signal, the timestamps, and the sample rate load('nonuniformdata.mat','ecgsig','t2','Fs')  % Find the ECG peaks [pks,locs] = findpeaks(ecgsig,Fs, ...     'MinPeakProminence',0.3,'MinPeakHeight',0.2);  % Determine the RR intervals RLocsInterval = diff(locs);  % Derive the HRV signal tHRV = locs(2:end); HRV = 1./RLocsInterval;  % Plot the signals figure a1 = subplot(2,1,1);  plot(t2,ecgsig,'b',locs,pks,'*r') grid a2 = subplot(2,1,2); plot(tHRV,HRV) grid xlabel(a2,'Time(s)') ylabel(a1,'ECG (mV)') ylabel(a2,'HRV (Hz)')

Los intervalos variables entre los picos R causan la no uniformidad en el tiempo de la muestra en los datos de HRV. Considere las ubicaciones de los picos de la señal y trace un histograma de sus separaciones en segundos.

figure hist(RLocsInterval)  grid xlabel('Sampling interval (s)') ylabel('RR distribution')

Las bandas de frecuencia típicas de interés en los espectros de VDH son:

  • Frecuencia muy baja (VLF), de 3,3 a 40 mHz,

  • Baja Frecuencia (LF), de 40 a 150 mHz,

  • Alta Frecuencia (HF), de 150 a 400 mHz.

Estas bandas confinan aproximadamente los rangos de frecuencia de los distintos mecanismos reguladores biológicos que contribuyen al VDH. Las fluctuaciones en cualquiera de estas bandas tienen un significado biológico.

Se utiliza para calcular el espectro de la señal HRV.plomb

figure plomb(HRV,tHRV,'Pd',[0.95, 0.5])

Las líneas discontinuas denotan 95% y 50% probabilidades de detección. Estos umbrales miden la significancia estadística de los picos. El espectro muestra los picos en las tres bandas de interés enumeradas anteriormente. Sin embargo, sólo el pico situado a 23,2 mHz en el rango de VLF muestra una probabilidad de detección del 95%, mientras que los otros picos tienen probabilidades de detección inferiores al 50%. Se cree que los picos que se encuentran por debajo de 40 mHz se deben a mecanismos reguladores a largo plazo, como el sistema termorregulador y los factores hormonales.