# Documentation

### This is machine translation

Translated by
Mouse over text to see original. Click the button below to return to the English verison of the page.

# filter

Class: timeseries

Shape frequency content of time-series

## Syntax

ts1 = filter(ts, numerator, denominator) ts1=filter(ts, numerator, denominator, index)

## Description

ts1 = filter(ts, numerator, denominator)  applies the transfer function filter b(z−1)/a(z−1) to the data in the timeseries object ts. b and a are the coefficient arrays of the transfer function numerator and denominator, respectively.

ts1=filter(ts, numerator, denominator, index)  uses the optional index integer array to specify either the columns or rows to filter, depending on the value of ts.IsTimeFirst.

## Tips

• The time-series data must be uniformly sampled to use this filter.

• The following function

y = filter(b,a,x) 

creates filtered data y by processing the data in vector x with the filter described by vectors a and b.

• The filter function is a general tapped delay-line filter, described by the difference equation:

a(1)y(n) = b(1)x(n) + b(2)x(n − 1) + ... + b(nb)x(nnb + 1) − a (2)y(n − 1) − ... − a(Na)y(nNb + 1).

Here, n is the index of the current sample, Na is the order of the polynomial described by vector a, and Nb is the order of the polynomial described by vector b. The output y(n) is a linear combination of current and previous inputs, x(n) x(n −1)..., and previous outputs, y(n − 1) y(n − 2)... .

• You use the discrete filter to shape the data by applying a transfer function to the input signal.

Depending on your objectives, the transfer function you choose might alter both the amplitude and the phase of the variations in the data at different frequencies to produce either a smoother or a rougher output.

• In digital signal processing (DSP), it is customary to write transfer functions as rational expressions in z−1 and to order the numerator and denominator terms in ascending powers of z−1.

Taking the z-transform of the difference equation

a(1)y(n) = b(1)x(n) + b(2)x(n −1) + ... + b(nb)x(nnb + 1) − a (2)y(n − 1) − ... − a(na)y(na + 1),

results in the transfer function

$Y\left(z\right)=H\left({z}^{-1}\right)X\left(z\right)=\frac{b\left(1\right)+b\left(2\right){z}^{-1}+...+b\left(nb\right){z}^{-nb+1}}{a\left(1\right)+a\left(2\right){z}^{-1}+...+a\left(na\right){z}^{-na+1}}X\left(z\right),$

where Y(z) is the z-transform of the filtered output y(n). The coefficients b and a are unchanged by the z-transform.

## Input Arguments

 ts The first timeseries object for which you want to shape the frequency content. numerator The coefficient array of the transfer function numerator. denominator The coefficient array of the transfer function denominator. index An integer array that specifies the columns or rows to filter when ts.IsTimeFirst is true.

## Output Arguments

 ts1 The timeseries object that results from filtering the input timeseries object.

## Examples

expand all

This example applies the following transfer function to the data in count.dat:

 

Load the matrix count into the workspace:

load count.dat 

Create a time-series object based on this matrix:

count1 = timeseries(count(:,1),[1:24]); 

Enter the coefficients of the denominator ordered in ascending powers of to represent :

a = [1 0.2]; 

Enter the coefficients of the numerator to represent :

b = [2 3]; 

Call the filter method:

filter_count = filter(count1, b, a); 

Compare the original data and the shaped data with an overlaid plot of the two curves:

figure plot(count1,'-.') grid on hold on plot(filter_count,'-') legend('Original Data','Shaped Data','Location','NorthWest')