Documentation Center |
Upsample, apply FIR filter, and downsample
yout = upfirdn(xin,h)
yout = upfirdn(xin,h,p)
yout = upfirdn(xin,h,p,q)
upfirdn performs a cascade of three operations:
Upsampling the input data in the matrix xin by a factor of the integer p (inserting zeros)
FIR filtering the upsampled signal data with the impulse response sequence given in the vector or matrix h
Downsampling the result by a factor of the integer q (throwing away samples)
upfirdn has been implemented as a MEX-file for maximum speed, so only the outputs actually needed are computed. The FIR filter is usually a lowpass filter, which you must design using another function such as firpm or fir1.
Note The function resample performs an FIR design using firls, followed by rate changing implemented with upfirdn. |
yout = upfirdn(xin,h) filters the input signal xin with the FIR filter having impulse response h. If xin is a row or column vector, then it represents a single signal. If xin is a matrix, then each column is filtered independently. If h is a row or column vector, then it represents one FIR filter. If h is a matrix, then each column is a separate FIR impulse response sequence. If yout is a row or column vector, then it represents one signal. If yout is a matrix, then each column is a separate output. No upsampling or downsampling is implemented with this syntax.
yout = upfirdn(xin,h,p) specifies the integer upsampling factor p, where p has a default value of 1.
yout = upfirdn(xin,h,p,q) specifies the integer downsampling factor q, where q has a default value of 1. The length of the output, yout, is ceil(((length(xin)-1)*p+length(h))/q)
If p and q are large and do not have many common factors, you may see this message:
Filter length is too large - reduce problem complexity.
Instead, you should use an interpolation function, such as interp1, to perform the resampling and then filter the input.
[1] Crochiere, R. E., and Lawrence R. Rabiner. Multirate Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1983, pp. 88–91.
[2] Crochiere, R. E. "A General Program to Perform Sampling Rate Conversion of Data by Rational Ratios." Programs for Digital Signal Processing (Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds.). New York: IEEE Press, 1979, Programs 8.2-1–8.2-7.
conv | decimate | downsample | filter | interp | intfilt | resample | upsample