Этот пример показывает, как выполнить спектральный анализ на неоднородно дискретизированных сигналах. Это помогает вам определить, равномерно ли дискретизирован сигнал или нет, и если нет, это показывает, как вычислить его спектр или его спектральную плотность степени.
Пример представляет периодограмму Ломба-Скаргля, которая может вычислять спектры неоднородно дискретизированных сигналов.
Неоднородно дискретизированные сигналы часто встречаются в автомобильной промышленности, в коммуникациях и в таких разнообразных областях, как медицина и астрономия. Неоднородная выборка может быть вызвана несовершенными датчиками, несоответствующими часами или событийными явлениями.
Расчет и изучение спектрального содержимого является важной частью анализа сигналов. Обычные методы спектрального анализа, такие как периодограмма и метод Уэлча, требуют равномерной дискретизации входного сигнала. Когда дискретизация неоднородна, можно повторно отобразить или интерполировать сигнал на однородную сетку сэмплирования. Это, однако, может добавить нежелательные программные продукты к спектру и может привести к ошибкам анализа.
Лучшая альтернатива - использовать метод Ломба-Скаргля, который работает непосредственно с неоднородными выборками и, таким образом, делает ненужным повторную выборку или интерполяцию. Алгоритм был реализован в 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.
Используйте метод Ломба-Скаргля, чтобы вычислить и визуализировать спектральное содержимое сигнала. Чтобы помочь лучше визуализировать спектр, рассмотрите частоты до 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), которые представляют физиологическое изменение во времени между сердцебиениями, обычно дискретизируются неравномерно, потому что частота сердечных сокращений человека не постоянна. Сигналы 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)')
Меняющиеся интервалы между R-пиками вызывают неоднородность данных 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 мГц, обусловлены долгосрочными регуляторными механизмами, такими как терморегуляторная система и гормональные факторы.