This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Remove linear trends


y = detrend(x)
y = detrend(x,'constant')
y = detrend(x,'linear',bp)


detrend removes the mean value or linear trend from a vector or matrix, usually for FFT processing.

y = detrend(x) removes the best straight-line fit from vector x and returns it in y. If x is a matrix, detrend removes the trend from each column.

y = detrend(x,'constant') removes the mean value from vector x or, if x is a matrix, from each column of the matrix.

y = detrend(x,'linear',bp) removes a continuous, piecewise linear trend from vector x or, if x is a matrix, from each column of the matrix. Vector bp contains the indices of the breakpoints between adjacent linear segments. The breakpoint between two segments is defined as the data point that the two segments share.

detrend(x,'linear'), with no breakpoint vector specified, is the same as detrend(x).


sig = [0 1 -2 1 0 1 -2 1 0];      % signal with no linear trend
trend = [0 1 2 3 4 3 2 1 0];      % two-segment linear trend
x = sig+trend;                    % signal with added trend
y = detrend(x,'linear',5)         % breakpoint at 5th element

y =


Note that the breakpoint is specified to be the fifth element, which is the data point shared by the two segments.


detrend computes the least-squares fit of a straight line (or composite line for piecewise linear trends) to the data and subtracts the resulting function from the data. To obtain the equation of the straight-line fit, use polyfit.

Extended Capabilities

See Also

Introduced before R2006a