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

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

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

Неоднородно дискретизированные сигналы

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

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

Лучшая альтернатива - использовать метод Ломба-Скаргля, который работает непосредственно с неоднородными выборками и, таким образом, делает ненужным повторную выборку или интерполяцию. Алгоритм был реализован в 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. The axes 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. The axes contains an object of type patch. This object represents TimeIntervalDiff.

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

Используйте метод Ломба-Скаргля, чтобы вычислить и визуализировать спектральное содержимое сигнала. Чтобы помочь лучше визуализировать спектр, рассмотрите частоты до 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. The axes contains an object of type line.

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

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

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

Точки выборки сигнала HRV расположены во времени R-Peak ЭКГ. Амплитуда каждой точки вычисляется как обратная временного различия между последовательными R-Peaks и помещается в момент второго 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)')

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

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

figure
hist(RLocsInterval)

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

Figure contains an axes. The axes 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. Axes 1 is empty. Axes 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 мГц, обусловлены долгосрочными регуляторными механизмами, такими как терморегуляторная система и гормональные факторы.

См. также