Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Second-order tunable notching and peaking IIR filter

The `NotchPeakFilter`

object filters each channel of the
input using IIR filter implementation.

To filter each channel of the input:

Create the

`dsp.NotchPeakFilter`

object and set its properties.Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects? (MATLAB).

`npFilter = dsp.NotchPeakFilter`

```
npFilter = dsp.NotchPeakFilter('Specification','Quality
factor and center frequency')
```

`npFilter = dsp.NotchPeakFilter('Specification','Coefficients')`

`npFilter = dsp.NotchPeakFilter(Name,Value)`

returns a
second-order notching and peaking IIR filter that independently filters each channel of
the input over time, using a specified center frequency and 3 dB bandwidth.`npFilter`

= dsp.NotchPeakFilter

```
npFilter = dsp.NotchPeakFilter('Specification','Quality
factor and center frequency')
```

specifies the quality factor (Q factor) of the notch or peak filter instead of the
`3`

dB bandwidth.

`npFilter = dsp.NotchPeakFilter('Specification','Coefficients')`

specifies the coefficient values that affect bandwidth and center frequency directly,
rather than specifying the design parameters in Hz. This removes the trigonometry
calculations involved when the properties are tuned.

`npFilter = dsp.NotchPeakFilter(`

returns a notch filter with each specified property name set to the specified value.
Unspecified properties have default values.`Name,Value`

)

**For versions earlier than R2016b, use the step
function to run the System object™ algorithm. The arguments to
step are the object you created, followed by
the arguments shown in this section.**

**For example, y = step(obj,x) and y = obj(x) perform equivalent operations.**

`Y = npFilter(x)`

`[Yn,Yp] = npFilter(x)`

To use an object function, specify the
System
object as the first input argument. For
example, to release system resources of a System
object named `obj`

, use
this syntax:

release(obj)

The design equation for the peak filter is:

$$H(z)=(1-b)\frac{1-{z}^{-2}}{1-2b\mathrm{cos}{w}_{0}{z}^{-1}+(2b-1){z}^{-2}}$$

The design equation for the notch filter is:

$$H(z)=b\frac{1-2\mathrm{cos}{w}_{0}{z}^{-1}+{z}^{-2}}{1-2b\mathrm{cos}{w}_{0}{z}^{-1}+(2b-1){z}^{-2}}$$

with

$$b=\frac{1}{1+\mathrm{tan}(\Delta w/2)}$$

where *ω*_{0} =
2π*f*_{0}/*f*_{s}
is the center frequency in radians/sample (*f*_{0} is
the center frequency in Hz and *f*_{s} is the sampling
frequency in Hz). Δ*ω* =
2πΔ*f*/*f*_{s} is the 3 dB
bandwidth in radians/sample (Δ*f* is the 3 dB bandwidth in Hz). Note that
the two filters are complementary:

$$\begin{array}{l}{H}_{\text{notch}}(z)+{H}_{\text{peak}}(z)=1\\ \text{theycanbewrittenas:}\\ {H}_{\text{peak}}(z)=\frac{1}{2}\left[1-A(z)\right]\\ {H}_{\text{notch}}(z)=\frac{1}{2}\left[1+A(z)\right]\\ \text{where}A\text{(z)isa}{2}^{\text{nd}}\text{orderallpassfilter}\text{.}\\ A(z)=\frac{{a}_{2}+{a}_{1}{z}^{-1}+{z}^{-2}}{1+{a}_{1}{z}^{-1}+{a}_{2}{z}^{-2}}\\ \text{and}\\ {a}_{1}=-2b\mathrm{cos}{\omega}_{0}\\ {a}_{2}=2b-1\end{array}$$

The filter is implemented as follows:

where

$$\begin{array}{l}{G}_{\text{3dB}}={a}_{2}=2b-1\\ {G}_{\text{cf}}=\frac{{a}_{1}-{a}_{1}{a}_{2}}{1-{a}_{2}{}^{2}}=-\mathrm{cos}{w}_{0}\end{array}$$

Notice that *G*_{cf} depends only on the center
frequency, and *G*_{3dB} depends only on the 3 dB
bandwidth.

[1] Orfanidis, Sophocles J. *Introduction
to Signal Processing*. Upper Saddle River, NJ: Prentice-Hall,
1996.