Удаление трендов из данных

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

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

load('ecgSignals.mat') 

t = (1:length(ecgl))';

subplot(2,1,1)
plot(t,ecgl), grid
title 'ECG Signals with Trends', ylabel 'Voltage (mV)'

subplot(2,1,2)
plot(t,ecgnl), grid
xlabel Sample, ylabel 'Voltage (mV)'

Figure contains 2 axes. Axes 1 with title ECG Signals with Trends contains an object of type line. Axes 2 contains an object of type line.

Сигнал на первом графике показывает линейный тренд. Тренд на втором сигнале нелинейен. Чтобы исключить линейный тренд, используйте функцию MATLAB ® detrend.

dt_ecgl = detrend(ecgl);

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

opol = 6;
[p,s,mu] = polyfit(t,ecgnl,opol);
f_y = polyval(p,t,[],mu);

dt_ecgnl = ecgnl - f_y;

subplot(2,1,1)
plot(t,dt_ecgl), grid
title 'Detrended ECG Signals', ylabel 'Voltage (mV)'

subplot(2,1,2)
plot(t,dt_ecgnl), grid
xlabel Sample, ylabel 'Voltage (mV)'

Figure contains 2 axes. Axes 1 with title Detrended ECG Signals contains an object of type line. Axes 2 contains an object of type line.

Эти тренды были эффективно устранены. Наблюдайте, как сигналы больше не показывают базовый сдвиг. Они готовы к дальнейшей обработке.

См. также

| |

Похожие темы