Decimation reduces the original
sampling rate of a sequence to a lower rate. It is the opposite of
interpolation. decimatelowpass
filters the input to guard against aliasing and downsamples the result.

y =
decimate(x,r) reduces
the sampling rate of x, the input signal, by
a factor of r. The decimated vector, y, is shortened by a factor of r so
that length(y) = ceil(length(x)/r). By default, decimate uses
a lowpass Chebyshev Type I IIR filter of order 8.

y =
decimate(x,r,n) uses
a Chebyshev filter of order n. Orders above 13
are not recommended because of numerical instability. The function
displays a warning in those cases.

y =
decimate(x,r,'fir') uses
an FIR filter designed using the window method with a Hamming window.
The filter has order 30.

Create a signal with two sinusoids. Decimate it by a factor of 13 using a Chebyshev IIR filter of order 5. Plot the original and decimated signals.

r = 13;
n = 16:365;
lx = length(n);
x = sin(2*pi*n/153) + cos(2*pi*n/127);
plot(0:lx-1,x,'o')
hold on
y = decimate(x,r,5);
stem(lx-1:-r:0,fliplr(y),'ro','filled','markersize',4)
legend('Original','Decimated','Location','south')
xlabel('Sample number')
ylabel('Signal')

The original and decimated signals have matching last elements.

Create a signal with two sinusoids. Decimate it by a factor of 13 using an FIR filter of order 82. Plot the original and decimated signals.

r = 13;
n = 16:365;
lx = length(n);
x = sin(2*pi*n/153) + cos(2*pi*n/127);
plot(0:lx-1,x,'o')
hold on
y = decimate(x,r,82,'fir');
stem(0:r:lx-1,y,'ro','filled','markersize',4)
legend('Original','Decimated','Location','south')
xlabel('Sample number')
ylabel('Signal')

The original and decimated signals have matching first elements.

decimate uses decimation algorithms 8.2 and
8.3 from [1].

decimate creates a
lowpass filter. The default is a Chebyshev Type I filter designed
using cheby1. This filter has
normalized cutoff frequency 0.8/r and passband
ripple 0.05 dB. Sometimes, the specified filter order
produces passband distortion due to roundoff errors accumulated from
the convolutions needed to create the transfer function. The filter
order is automatically reduced when distortion causes the magnitude
response at the cutoff frequency to differ from the ripple by more
than 10^{–6}.

When the 'fir' option is chosen, decimate uses fir1 to design a lowpass FIR filter with
cutoff frequency 1/r.

When using the FIR filter, decimate filters
the input sequence in only one direction. This conserves memory and
is useful for working with long sequences. In the IIR case, decimate applies
the filter in forward and reverse directions using filtfilt to remove phase distortion.
This in effect doubles the filter order. In both cases, the function
minimizes transient effects at both ends of the signal by matching
endpoint conditions.

Finally, decimate resamples
the data by selecting every rth point from the
interior of the filtered signal. The resampled sequence is such that y(end) matches x(end) when
the IIR filter is used and y(1) matches x(1) in
the FIR case.

References

[1] Digital Signal Processing Committee of
the IEEE Acoustics, Speech, and Signal Processing Society, eds. Programs
for Digital Signal Processing. New York: IEEE Press, 1979,
chap. 8.