Спектральный анализ неоднородно выбранных сигналов

В этом примере показано, как выполнить спектральный анализ на неоднородно выбранных сигналах. Это помогает вам определить, производится ли сигнал однородно или нет, и в противном случае это показывает, как вычислить его спектр или его спектральную плотность мощности.

Пример вводит периодограмму Lomb-Scargle, которая может вычислить спектры неоднородно выбранных сигналов.

Неоднородно выбранные сигналы

Неоднородно выбранные сигналы часто находятся в автомобильной промышленности в коммуникациях, и в полях, столь же разнообразных как медицина и астрономия. Неоднородная выборка может произойти из-за несовершенных датчиков, часов, которым не соответствуют или инициированных событием явлений.

Расчет и исследование спектрального содержимого являются важной частью анализа сигнала. Обычные методы спектрального анализа как периодограмма и валлийский метод требуют, чтобы входной сигнал был однородно произведен. Когда выборка неоднородна, можно передискретизировать или интерполировать сигнал на универсальную демонстрационную сетку. Это, однако, может добавить нежелательные артефакты в спектр и может привести к аналитическим ошибкам.

Лучшая альтернатива должна использовать метод Lomb-Scargle, который работает непосредственно с неоднородными выборками и таким образом делает ненужным передискретизировать или интерполировать. Алгоритм был реализован в plomb функция.

Спектральный анализ сигналов с Недостающими данными

Рассмотрите температурную систему мониторинга, в которой микроконтроллер записывает температуру комнаты и передает это чтение каждые 15 минут к облачному серверу, который хранит его. Известно, что незначительные сбои в интернет-соединении препятствуют тому, чтобы облачная система получила некоторые показания, отправленные микроконтроллером. Кроме того, по крайней мере, однажды в период измерения батарея микроконтроллера закончилась, ведя к большому разрыву в выборке.

Загрузите температурные показания и соответствующие метки времени.

load('nonuniformdata.mat','roomtemp','t1')

figure
plot(t1/(60*60*24*7),roomtemp,'LineWidth',1.2)

grid
xlabel('Time (weeks)')
ylabel('Temperature (\circF)')

Figure contains an axes object. The axes object contains an object of type line.

Простой способ определить, производится ли сигнал однородно, состоит в том, чтобы взять гистограмму интервалов между последовательными шагами расчета.

Постройте гистограмму интервалов выборки (разница во времени) в минутах. Включайте только точки, в которых присутствуют выборки.

tAtPoints = t1(~isnan(roomtemp))/60;
TimeIntervalDiff = diff(tAtPoints);

figure
hist(TimeIntervalDiff,0:100)
grid
xlabel('Sampling intervals (minutes)')
ylabel('Occurrences')
xlim([10 100])

Figure contains an axes object. The axes object contains an object of type patch. This object represents TimeIntervalDiff.

Большинство измерений расположено с интервалами на расстоянии приблизительно в 15 минут, как ожидалось. Однако достаточное количество случаев имеет интервалы выборки приблизительно 30 и 45 минут, которые соответствуют одной или двум последовательным пропущенным выборкам. Это заставляет сигнал быть неоднородно произведенным. Кроме того, гистограмма показывает некоторое дрожание, окружающее панели, показывающие высокие случаи. Это могло относиться к задержке TCP/IP.

Используйте метод Lomb-Scargle, чтобы вычислить и визуализировать спектральное содержимое сигнала. Чтобы помочь визуализировать спектр лучше, считайте частоты до 0,02 МГц, которые соответствуют приблизительно 13 циклам в неделю.

[Plomb,flomb] = plomb(roomtemp,t1,2e-5,'power');

figure
plot(flomb*60*60*24*7,Plomb)
grid
xlabel('Frequency (cycles/week)')
ylabel('Power (dBW)')

Figure contains an axes object. The axes object contains an object of type line.

Спектр показывает доминирующие периодичности в 7 циклах в неделю и 1 цикле в неделю. Это понятно, учитывая, что данные прибывают из терморегулируемого здания на семидневном календаре. Спектральная линия, показывающая пик в 1 цикле в неделю, указывает, что температура в создании следует за еженедельным циклом с более низкими температурами по выходным и более высокими температурами в течение недели. Спектральная линия 7 циклов в неделю указывает, что существует также ежедневный цикл с более низкими температурами при ночных и более высоких температурах в течение дня.

Спектральный анализ сигналов с неравномерно расположенными с интервалами выборками

Сигналы изменчивости сердечного ритма (HRV), которые представляют физиологическое изменение вовремя между heartbeat, обычно неравномерно производятся, потому что уровни человеческого сердца не постоянные. Сигналы HRV выведены из электрокардиограммы (ECG) показания.

Точки выборки сигнала HRV расположены в R-пиковое-время ECG. Амплитуда каждой точки вычисляется как инверсия разницы во времени между последовательным R-Peaks и помещается в момент второго R-пика.

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

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. Axes object 2 contains an object of type line.

Различные интервалы между R-peaks вызывают неоднородность шага расчета в данных HRV. Рассмотрите пиковые местоположения сигнала и постройте гистограмму их разделений в секундах.

figure
hist(RLocsInterval)

grid
xlabel('Sampling interval (s)')
ylabel('RR distribution')

Figure contains an axes object. The axes object contains an object of type patch. This object represents RLocsInterval.

Типичные диапазоны частот интереса к спектрам HRV:

  • Очень Низкая частота (VLF), от 3,3 до 40 МГц,

  • Низкая частота (LF), от 40 до 150 МГц,

  • Высокая частота (HF), от 150 до 400 МГц.

Эти полосы приблизительно ограничивают частотные диапазоны отличных биологических регулирующих механизмов, которые способствуют HRV. Колебания любой из этих полос имеют биологическое значение.

Используйте plomb вычислить спектр сигнала HRV.

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

Figure contains 2 axes objects. Axes object 1 is empty. Axes object 2 with title Lomb-Scargle Power Spectral Density Estimate contains 3 objects of type line.

Пунктирные линии обозначают 95% и 50% вероятностей обнаружения. Эти пороги измеряют статистическое значение peaks. Спектр показывает peaks во всех трех полосах упомянутого выше интереса. Однако только пик, расположенный на уровне 23,2 МГц в области значений VLF, показывает вероятности обнаружения 95%, в то время как другой peaks имеет вероятности обнаружения меньше чем 50%. Peaks, лежащий ниже 40 МГц, как думают, происходит из-за долгосрочных регулирующих механизмов, таких как терморегулятивная система и гормональные факторы.

Смотрите также