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

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

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

load(fullfile(matlabroot,'examples','signal','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)'

Сигнал на первом графике показывает линейный тренд. Тренд на втором сигнале нелинеен. Чтобы устранить линейный тренд, используйте функцию 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)'

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

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

| |

Похожие темы