| Contents | Index |
y = filter(b,1,x)
[y,zf]
= filter(b,1,x,zi)
y = filter(b,1,x,zi,dim)
y = filter(b,1,x) filters the data in the fixed-point vector x using the filter described by the fixed-point vector b. The function returns the filtered data in the output fi object y. Inputs b and x must be fi objects. filter always operates along the first non-singleton dimension. Thus, the filter operates along the first dimension for column vectors and nontrivial matrices, and along the second dimension for row vectors.
[y,zf] = filter(b,1,x,zi) gives access to initial and final conditions of the delays, zi and zf. zi is a vector of length length(b)-1, or an array with the leading dimension of size length(b)-1 and with remaining dimensions matching those of x. zi must be a fi object with the same data type as y and zf. If you do not specify a value for zi, it defaults to a fixed-point array with a value of 0 and the appropriate numerictype and size.
y = filter(b,1,x,zi,dim) performs the filtering operation along the specified dimension. If you do not want to specify the vector of initial conditions, use [] for the input argument zi.
The filter function only supports FIR filters. In the general filter representation, b/a, the denominator, a, of an FIR filter is the scalar 1, which is the second input of this function.
The numerictype of b can be different than the numerictype of x.
If you want to specify initial conditions, but do not know what numerictype to use, first try filtering your data without initial conditions. You can do so by specifying [] for the input zi. After performing the filtering operation, you have the numerictype of y and zf (if requested). Because the numerictype of zi must match that of y and zf, you now know the numerictype to use for the initial conditions.
y |
Output vector containing the filtered fixed-point data. |
zf |
Fixed-point output vector containing the final conditions of the delays. |
The filter length is length(b), or the number of filter coefficients specified in the fixed-point vector b.
The filter order is the number of states (delays) of the filter, and is equal to L-1.
The following example filters a high-frequency fixed-point sinusoid from a signal that contains both a low- and high-frequency fixed-point sinusoid.
w1 = .1*pi;
w2 = .6*pi;
n = 0:999;
xd = sin(w1*n) + sin(w2*n);
x = sfi(xd,12);
b = ufi([.1:.1:1,1-.1:-.1:.1]/4,10);
gd = (length(b)-1)/2;
y = filter(b,1,x);
%% Plot results, accomodate for group-delay of filter
plot(n(1:end-gd),x(1:end-gd))
hold on
plot(n(1:end-gd),y(gd+1:end),'r--')
axis([0 50 -2 2])
legend('Unfiltered signal','Filtered signal')
xlabel('Sample index (n)')
ylabel('Signal value')The resulting plot shows both the unfiltered and filtered signals.

The filter function uses a Direct-Form Transposed FIR implementation of the following difference equation:
![]()
where L is the filter length and N is the filter order.
The following diagram shows the direct-form transposed FIR filter structure used by the filter function:


Learn how to apply early verification to your development process through these technical resources.
How much time do you spend on testing to ensure implementation meets system-level requirements?
| © 1984-2012- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |