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 |
filters
the input signal yout
= upfirdn(xin
,h
)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.
specifies
the integer upsampling factor yout
= upfirdn(xin
,h
,p
)p
,
where p
has a default value of 1.
specifies
the integer downsampling factor yout
= upfirdn(xin
,h
,p
,q
)q
,
where q
has a default value of 1.
The length of the output, yout
, is ceil(((length(xin)-1)*p+length(h))/q)
Note
Since |
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.