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

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

Пример вводит периодограмму 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)')

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

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

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

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

Большинство измерений расположено с интервалами на расстоянии приблизительно в 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)')

Спектр показывает доминирующие периодичности в 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)')

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

figure
hist(RLocsInterval)

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

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

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

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

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

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

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

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

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