Main Content

Filter Data

Filter Difference Equation

Filters are data processing techniques that can smooth out high-frequency fluctuations in data or remove periodic trends of a specific frequency from data. In MATLAB®,filterfunction filters a vector of datax根据以下区别情商uation, which describes a tapped delay-line filter.

a ( 1 ) y ( n ) = b ( 1 ) x ( n ) + b ( 2 ) x ( n 1 ) + + b ( N b ) x ( n N b + 1 ) a ( 2 ) y ( n 1 ) a ( N a ) y ( n N a + 1 )

In this equation,aandbare vectors of coefficients of the filter,Nais the feedback filter order, andNbis the feedforward filter order.nis the index of the current element ofx. The outputy(n) is a linear combination of the current and previous elements ofxandy.

Thefilterfunction uses specified coefficient vectorsaandbto filter the input datax. For more information on difference equations describing filters, see[1].

Moving-Average Filter of Traffic Data

Thefilterfunction is one way to implement a moving-average filter, which is a common data smoothing technique.

The following difference equation describes a filter that averages time-dependent data with respect to the current hour and the three previous hours of data.

y ( n ) = 1 4 x ( n ) + 1 4 x ( n - 1 ) + 1 4 x ( n - 2 ) + 1 4 x ( n - 3 )

Import data that describes traffic flow over time, and assign the first column of vehicle counts to the vectorx.

loadcount.datx = count(:,1);

Create the filter coefficient vectors.

a = 1; b = [1/4 1/4 1/4 1/4];

Compute the 4-hour moving average of the data, and plot both the original data and the filtered data.

y = filter(b,a,x); t = 1:length(x); plot(t,x,'--',t,y,“- - -”) legend('Original Data','Filtered Data')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original Data, Filtered Data.

Modify Amplitude of Data

This example shows how to modify the amplitude of a vector of data by applying a transfer function.

In digital signal processing, filters are often represented by a transfer function. The Z-transform of the difference equation

a ( 1 ) y ( n ) = b ( 1 ) x ( n ) + b ( 2 ) x ( n - 1 ) + . . . + b ( N b ) x ( n - N b + 1 ) - a ( 2 ) y ( n - 1 ) - . . . - a ( N a ) y ( n - N a + 1 )

is the following transfer function.

Y ( z ) = H ( z - 1 ) X ( z ) = b ( 1 ) + b ( 2 ) z - 1 + . . . + b ( N b ) z - N b + 1 a ( 1 ) + a ( 2 ) z - 1 + . . . + a ( N a ) z - N a + 1 X ( z )

Use the transfer function

H ( z - 1 ) = b ( z - 1 ) a ( z - 1 ) = 2 + 3 z - 1 1 + 0 . 2 z - 1

to modify the amplitude of the data incount.dat.

Load the data and assign the first column to the vectorx.

loadcount.datx = count(:,1);

Create the filter coefficient vectors according to the transfer function H ( z - 1 ) .

a = [1 0.2]; b = [2 3];

Compute the filtered data, and plot both the original data and the filtered data. This filter primarily modifies the amplitude of the original data.

y = filter(b,a,x); t = 1:length(x); plot(t,x,'--',t,y,“- - -”) legend('Original Data','Filtered Data')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original Data, Filtered Data.

References

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck.Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1999.

See Also

||||

Related Topics