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

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

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

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 objects. Axes object 1 with title ECG Signals with Trends contains an object of type line. Axes object 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 objects. Axes object 1 with title Detrended ECG Signals contains an object of type line. Axes object 2 contains an object of type line.

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

Смотрите также

| |

Похожие темы