exponenta event banner

Удаление тенденций из данных

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

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

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.

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

См. также

| |

Связанные темы