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