| Signal Processing Toolbox | ![]() |
Decrease the sampling rate for a sequence (decimation).
Syntax
y=decimate(x,r) y=decimate(x,r,n) y=decimate(x,r,'fir') y=decimate(x,r,n,'fir')
Description
Decimation reduces the original sampling rate for a sequence to a lower rate, the opposite of interpolation. The decimation process filters the input data with a lowpass filter and then resamples the resulting smoothed signal at a lower rate.
y = decimate(x,r)
reduces the sample rate of x by a factor r. The decimated vector y is r times shorter in length than the input vector x. By default, decimate employs an eighth-order lowpass Chebyshev type I filter. It filters the input sequence in both the forward and reverse directions to remove all phase distortion, effectively doubling the filter order.
y = decimate(x,r,n)
uses an order n Chebyshev filter. Orders above 13 are not recommended because of numerical instability. MATLAB displays a warning in this case.
y = decimate(x,r,' uses a 30-point FIR filter, instead of the Chebyshev IIR filter. Here fir')
decimate filters the input sequence in only one direction. This technique conserves memory and is useful for working with long sequences.
y = decimate(x,r,n,' uses a length fir')
n FIR filter.
Example
Decimate a signal by a factor of four.
t=0:.00025:1; % Time vector x=sin(2*pi*30*t) + sin(2*pi*60*t); y=decimate(x,4);
View the original and decimated signals.
stem(x(1:120)), axis([0 120 -2 2]) % Original signal
title('Original Signal')
figure
stem(y(1:30)) % Decimated signal
title('Decimated Signal')
Algorithm
decimate uses decimation algorithms 8.2 and 8.3 from [1]:
decimate uses a Chebyshev type I filter with normalized cutoff frequency 0.8/r and 0.05 dB of passband ripple. For the fir option, decimate designs a lowpass FIR filter with cutoff frequency 1/r using fir1.
decimate applies the filter to the input vector in one direction. In the IIR case, decimate applies the filter in forward and reverse directions with filtfilt.
decimate resamples the filtered data by selecting every rth point.
Diagnostics
If r is not an integer, decimate gives the following error message.
Resampling rate R must be an integer.
If n specifies an IIR filter with order greater than 13, decimate gives the following warning.
Warning: IIR filters above order 13 may be unreliable.
See Also
|
Resample data at a higher rate using lowpass interpolation. |
|
Change sampling rate by any rational factor. |
|
Cubic spline interpolation (see the MATLAB documentation). |
|
Upsample, apply an FIR filter, and downsample. |
References
[1] IEEE. Programs for Digital Signal Processing. IEEE Press. New York: John Wiley & Sons, 1979. Chapter 8.
| dct | deconv | ![]() |