Smooth response data
yy = smooth(y)
gpuarrayYY = smooth(gpuarrayY)
yy = smooth(y,span)
yy = smooth(y,
yy = smooth(y,span,
yy = smooth(y,'sgolay',degree)
yy = smooth(y,span,'sgolay',degree)
yy = smooth(x,y,...)
yy = smooth(y) smooths the data in the column vector
y using a moving average filter. Results are returned in the column vector
yy. The default span for the moving average is
The first few elements of
yy are given by
yy(1) = y(1) yy(2) = (y(1) + y(2) + y(3))/3 yy(3) = (y(1) + y(2) + y(3) + y(4) + y(5))/5 yy(4) = (y(2) + y(3) + y(4) + y(5) + y(6))/5 ...
Because of the way endpoints are handled, the result differs from the result returned by the
gpuarrayYY = smooth(gpuarrayY) performs the operation on a GPU. The input
gpuarrayY is a gpuArray column vector. The output
gpuarrayYY is a gpuArray column vector. This syntax requires the Parallel Computing Toolbox™.
Note: You can use gpuArray x and y inputs with the smooth function, but this is only recommended with the default
yy = smooth(y,span) sets the span of the moving average to
span must be odd.
yy = smooth(y, smooths the data in
y using the method
method and the default span. Supported values for
method are listed in the table below.
Moving average (default). A lowpass filter with filter coefficients equal to the reciprocal of the span.
Local regression using weighted linear least squares and a 1st degree polynomial model
Local regression using weighted linear least squares and a 2nd degree polynomial model
Savitzky-Golay filter. A generalized moving average with filter coefficients determined by an unweighted linear least-squares regression and a polynomial model of specified degree (default is 2). The method can accept nonuniform predictor data.
A robust version of
A robust version of
yy = smooth(y,span, sets the span of
span. For the
span is a percentage of the total number of data points, less than or equal to 1. For the moving average and Savitzky-Golay methods,
span must be odd (an even
span is automatically reduced by
yy = smooth(y,'sgolay',degree) uses the Savitzky-Golay method with polynomial degree specified by
yy = smooth(y,span,'sgolay',degree) uses the number of data points specified by
span in the Savitzky-Golay calculation.
span must be odd and
degree must be less than
yy = smooth(x,y,...) additionally specifies
x data. If
x is not provided, methods that require
x data assume
x = 1:length(y). You should specify
x data when it is not uniformly spaced or sorted. If
x is not uniform and you do not specify
lowess is used. If the smoothing method requires
x to be sorted, the sorting occurs automatically.
Load the data in
The 24-by-3 array
count contains traffic counts at three intersections for each hour of the day.
First, use a moving average filter with a 5-hour span to smooth all of the data at once (by linear index) :
c = smooth(count(:)); C1 = reshape(c,24,3);
Plot the original data and the smoothed data:
subplot(3,1,1) plot(count,':'); hold on plot(C1,'-'); title('Smooth C1 (All Data)')
Second, use the same filter to smooth each column of the data separately:
C2 = zeros(24,3); for I = 1:3, C2(:,I) = smooth(count(:,I)); end
Again, plot the original data and the smoothed data:
subplot(3,1,2) plot(count,':'); hold on plot(C2,'-'); title('Smooth C2 (Each Column)')
Plot the difference between the two smoothed data sets:
subplot(3,1,3) plot(C2 - C1,'o-') title('Difference C2 - C1')
Note the additional end effects from the 3-column smooth.
Create noisy data with outliers:
x = 15*rand(150,1); y = sin(x) + 0.5*(rand(size(x))-0.5); y(ceil(length(x)*rand(2,1))) = 3;
Smooth the data using the
rloess methods with a span of 10%:
yy1 = smooth(x,y,0.1,'loess'); yy2 = smooth(x,y,0.1,'rloess');
Plot original data and the smoothed data.
[xx,ind] = sort(x); subplot(2,1,1) plot(xx,y(ind),'b.',xx,yy1(ind),'r-') set(gca,'YLim',[-1.5 3.5]) legend('Original Data','Smoothed Data Using ''loess''',... 'Location','NW') subplot(2,1,2) plot(xx,y(ind),'b.',xx,yy2(ind),'r-') set(gca,'YLim',[-1.5 3.5]) legend('Original Data','Smoothed Data Using ''rloess''',... 'Location','NW')
Note that the outliers have less influence on the robust method.