IIR comb notch or peak filter
[num,den] = iircomb(n,bw)
[num,den] = iircomb(n,bw,ab)
[num,den] = iircomb(...,'type')
[num,den] = iircomb(n,bw) returns a digital notching filter with order n and with the width of the filter notch at -3 dB set to bw, the filter bandwidth. The filter order must be a positive integer. n also defines the number of notches in the filter across the frequency range from 0 to 2π — the number of notches equals n+1.
For the notching filter, the transfer function takes the form
where α and b are the positive scalars and n is the filter order or the number of notches in the filter minus 1.
The quality factor (Q factor) q for the filter is related to the filter bandwidth by q = ω0/bw where ω0 is the frequency to remove from the signal.
[num,den] = iircomb(n,bw,ab) returns a digital notching filter whose bandwidth, bw, is specified at a level of -ab decibels. Including the optional input argument ab lets you specify the magnitude response bandwidth at a level that is not the default -3 dB point, such as -6 dB or 0 dB.
'notch' to design an IIR notch filter. Notch filters attenuate the response at the specified frequencies. This is the default type. When you omit the type input argument, iircomb returns a notch filter.
'peak' to design an IIR peaking filter. Peaking filters boost the signal at the specified frequencies.
The transfer function for peaking filters is
Design and plot an IIR notch filter with 11 notches (equal to filter order plus 1) that removes a 60 Hz tone (f0) from a signal at 600 Hz (fs). For this example, set the Q factor for the filter to 35 and use it to specify the filter bandwidth.
fs = 600; fo = 60; q = 35; bw = (fo/(fs/2))/q; [b,a] = iircomb(fs/fo,bw,'notch'); % Note type flag 'notch' fvtool(b,a);
Using the Filter Visualization Tool (FVTool) generates the following plot showing the filter notches. Note the notches are evenly spaced and one falls at exactly 60 Hz.