Skip to Main Content Skip to Search
Product Documentation

filter - One-dimensional digital filter of fi objects

Syntax

y = filter(b,1,x)
[y,zf] = filter(b,1,x,zi)
y = filter(b,1,x,zi,dim)

Description

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.

Tips

Input Arguments

b

Fixed-point vector of the filter coefficients.

x

Fixed-point vector containing the data for the function to filter.

zi

Fixed-point vector containing the initial conditions of the delays. If the initial conditions of the delays are zero, you can specify zero, or, if you do not know the appropriate size and numerictype for zi, use [].

If you do not specify a value for zi, the parameter defaults to a fixed-point vector with a value of zero and the same numerictype and size as the output zf (default).

dim

Dimension along which to perform the filtering operation.

Output Arguments

y

Output vector containing the filtered fixed-point data.

zf

Fixed-point output vector containing the final conditions of the delays.

Definitions

Filter length (L)

The filter length is length(b), or the number of filter coefficients specified in the fixed-point vector b.

Filter order (N)

The filter order is the number of states (delays) of the filter, and is equal to L-1.

Examples

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.

Algorithms

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:

See Also

conv | filter

  


Free Early Verification Kit

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