Функция detrend вычитает среднюю или наиболее подходящую линию (в смысле наименьших квадратов) из данных. Если данные содержат несколько столбцов данных, detrend обрабатывает каждый столбец данных отдельно.
Удаление тренда из данных позволяет сосредоточить анализ на колебаниях данных о тренде. Линейный тренд обычно указывает на систематическое увеличение или уменьшение данных. Например, систематический сдвиг может быть результатом дрейфа датчика. Хотя тренды могут быть значимыми, некоторые типы анализов дают лучшее представление после удаления трендов.
Имеет ли смысл удалять эффекты тренда в данных, часто зависит от целей анализа.
В этом примере показано, как удалить линейный тренд из ежедневных цен на закрывающиеся акции, чтобы подчеркнуть колебания цен относительно общего увеличения. Если данные действительно имеют тренд, сдерживание его приводит к нулевому среднему значению и уменьшает общую вариацию. Пример моделирует колебания цены акций с использованием распределения, взятого из gallery функция.
Создайте моделируемый набор данных и вычислите его среднее значение. sdata представляет собой ежедневные изменения цены запаса.
rng(20) t = 0:300; dailyFluct = randn(size(t)); sdata = cumsum(dailyFluct) + 20 + t/100;
Найдите среднее значение данных.
mean(sdata)
ans = 41.5155
Постройте график и пометьте данные. Обратите внимание на систематическое увеличение цен акций, отображаемых в данных.
figure plot(t,sdata); legend('Original Data','Location','northwest'); xlabel('Time (days)'); ylabel('Stock Price (dollars)');

Обратиться detrend, которая выполняет линейное вписывание в sdata а затем удаляет из него тренд. Вычитание выходных данных из входных данных дает вычисленную линию тренда.
detrend_sdata = detrend(sdata); trend = sdata - detrend_sdata;
Найдите среднее значение отклоненных данных.
mean(detrend_sdata)
ans = -8.0497e-15
Как и ожидалось, уменьшенные данные имеют среднее значение, очень близкое к 0.
Отображение результатов путем добавления к графику линии тренда, отклоненных данных и их среднего значения.
hold on plot(t,trend,':r') plot(t,detrend_sdata,'m') plot(t,zeros(size(t)),':k') legend('Original Data','Trend','Detrended Data',... 'Mean of Detrended Data','Location','northwest') xlabel('Time (days)'); ylabel('Stock Price (dollars)');
