В этом примере показано, как выполнить спектральный анализ на неоднородно выбранных сигналах. Это помогает вам определить, производится ли сигнал однородно или нет, и в противном случае это показывает, как вычислить его спектр или его спектральную плотность мощности.
Пример вводит периодограмму 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 МГц, как думают, происходит из-за долгосрочных регулирующих механизмов, таких как терморегулятивная система и гормональные факторы.