# IIR Filter - psambit9791/jDSP Wiki

#### This library provides 3 kinds of frequency-based filters.

*Butterworth Filter**Chebyshev Filter (Type I and Type II)**Bessel Filter*

This page explains the usage of all these filters in the context of this library.

###### The examples provided here use this signal:

## Butterworth Filter

#### Low-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Cutoff Frequency ⇨ 9Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int cutOff = 9; //Cut-off Frequency
Butterworth flt = new Butterworth(signal, Fs); //signal is of type double[]
double[] result = flt.lowPassFilter(order, cutOff); //get the result after filtering
```

#### High-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Cutoff Frequency ⇨ 29Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int cutOff = 29; //Cut-off Frequency
Butterworth flt = new Butterworth(signal, Fs); //signal is of type double[]
double[] result = flt.highPassFilter(order, cutOff); //get the result after filtering
```

#### Band-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Lower Cutoff Frequency ⇨ 12Hz
- Upper Cutoff Frequency ⇨ 18Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int lowCutOff = 12; //Lower Cut-off Frequency
int highCutOff = 18; //Higher Cut-off Frequency
Butterworth flt = new Butterworth(signal, Fs); //signal is of type double[]
double[] result = flt.bandPassFilter(order, lowCutOff, highCutOff); //get the result after filtering
```

#### Band-Stop Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Lower Cutoff Frequency ⇨ 7Hz
- Upper Cutoff Frequency ⇨ 28Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int lowCutOff = 7; //Lower Cut-off Frequency
int highCutOff = 28; //Higher Cut-off Frequency
Butterworth flt = new Butterworth(signal, Fs); //signal is of type double[]
double[] result = flt.bandStopFilter(order, lowCutOff, highCutOff); //get the result after filtering
```

## Chebyshev Filter Type I

#### Low-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Cutoff Frequency ⇨ 9Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int filterType = 1; //Can be 1 (for type 1) or 2 (for type 2)
double rippleFactor = 1; //maximum ripple allowed below unity gain
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int cutOff = 9; //Cut-off Frequency
Chebyshev flt = new Chebyshev(signal, Fs, filterType, rippleFactor); //signal is of type double[]
double[] result = flt.lowPassFilter(order, cutOff); //get the result after filtering
```

#### High-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Cutoff Frequency ⇨ 29Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int filterType = 1; //Can be 1 (for type 1) or 2 (for type 2)
double rippleFactor = 1; //maximum ripple allowed below unity gain
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int cutOff = 29; //Cut-off Frequency
Chebyshev flt = new Chebyshev(signal, Fs, filterType, rippleFactor); //signal is of type double[]
double[] result = flt.highPassFilter(order, cutOff); //get the result after filtering
```

#### Band-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Lower Cutoff Frequency ⇨ 12Hz
- Upper Cutoff Frequency ⇨ 18Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int filterType = 1; //Can be 1 (for type 1) or 2 (for type 2)
double rippleFactor = 1; //maximum ripple allowed below unity gain
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int lowCutOff = 12; //Lower Cut-off Frequency
int highCutOff = 18; //Higher Cut-off Frequency
Chebyshev flt = new Chebyshev(signal, Fs, filterType, rippleFactor); //signal is of type double[]
double[] result = flt.bandPassFilter(order, lowCutOff, highCutOff); //get the result after filtering
```

#### Band-Stop Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Lower Cutoff Frequency ⇨ 7Hz
- Upper Cutoff Frequency ⇨ 28Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int filterType = 1; //Can be 1 (for type 1) or 2 (for type 2)
double rippleFactor = 1; //maximum ripple allowed below unity gain
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int lowCutOff = 7; //Lower Cut-off Frequency
int highCutOff = 28; //Higher Cut-off Frequency
Chebyshev flt = new Chebyshev(signal, Fs, filterType, rippleFactor); //signal is of type double[]
double[] result = flt.bandStopFilter(order, lowCutOff, highCutOff); //get the result after filtering
```

## Chebyshev Filter Type II

#### Low-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Cutoff Frequency ⇨ 9Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int filterType = 2; //Can be 1 (for type 1) or 2 (for type 2)
double rippleFactor = 1; //maximum ripple allowed below unity gain
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int cutOff = 9; //Cut-off Frequency
Chebyshev flt = new Chebyshev(signal, Fs, filterType, rippleFactor); //signal is of type double[]
double[] result = flt.lowPassFilter(order, cutOff); //get the result after filtering
```

#### High-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Cutoff Frequency ⇨ 29Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int filterType = 2; //Can be 1 (for type 1) or 2 (for type 2)
double rippleFactor = 1; //maximum ripple allowed below unity gain
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int cutOff = 29; //Cut-off Frequency
Chebyshev flt = new Chebyshev(signal, Fs, filterType, rippleFactor); //signal is of type double[]
double[] result = flt.highPassFilter(order, cutOff); //get the result after filtering
```

#### Band-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Lower Cutoff Frequency ⇨ 12Hz
- Upper Cutoff Frequency ⇨ 18Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int filterType = 2; //Can be 1 (for type 1) or 2 (for type 2)
double rippleFactor = 1; //maximum ripple allowed below unity gain
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int lowCutOff = 12; //Lower Cut-off Frequency
int highCutOff = 18; //Higher Cut-off Frequency
Chebyshev flt = new Chebyshev(signal, Fs, filterType, rippleFactor); //signal is of type double[]
double[] result = flt.bandPassFilter(order, lowCutOff, highCutOff); //get the result after filtering
```

#### Band-Stop Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Lower Cutoff Frequency ⇨ 7Hz
- Upper Cutoff Frequency ⇨ 28Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int filterType = 2; //Can be 1 (for type 1) or 2 (for type 2)
double rippleFactor = 1; //maximum ripple allowed below unity gain
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int lowCutOff = 7; //Lower Cut-off Frequency
int highCutOff = 28; //Higher Cut-off Frequency
Chebyshev flt = new Chebyshev(signal, Fs, filterType, rippleFactor); //signal is of type double[]
double[] result = flt.bandStopFilter(order, lowCutOff, highCutOff); //get the result after filtering
```

## Bessel Filter

#### Low-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Cutoff Frequency ⇨ 9Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int cutOff = 9; //Cut-off Frequency
Bessel flt = new Bessel(signal, Fs); //signal is of type double[]
double[] result = flt.lowPassFilter(order, cutOff); //get the result after filtering
```

#### High-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Cutoff Frequency ⇨ 29Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int cutOff = 29; //Cut-off Frequency
Bessel flt = new Bessel(signal, Fs); //signal is of type double[]
double[] result = flt.highPassFilter(order, cutOff); //get the result after filtering
```

#### Band-Pass Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Lower Cutoff Frequency ⇨ 12Hz
- Upper Cutoff Frequency ⇨ 18Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int lowCutOff = 12; //Lower Cut-off Frequency
int highCutOff = 18; //Higher Cut-off Frequency
Bessel flt = new Bessel(signal, Fs); //signal is of type double[]
double[] result = flt.bandPassFilter(order, lowCutOff, highCutOff); //get the result after filtering
```

#### Band-Stop Filter

The parameters for this filter are as follows:

- Order ⇨ 4
- Lower Cutoff Frequency ⇨ 7Hz
- Upper Cutoff Frequency ⇨ 28Hz
- Sampling Frequency ⇨ 100Hz

###### Code

```
int Fs = 100; //Sampling Frequency in Hz
int order = 4; //order of the filter
int lowCutOff = 7; //Lower Cut-off Frequency
int highCutOff = 28; //Higher Cut-off Frequency
Bessel flt = new Bessel(signal, Fs); //signal is of type double[]
double[] result = flt.bandStopFilter(order, lowCutOff, highCutOff); //get the result after filtering
```